Static chores sync configuration was like an unnecessary layer of narrow scoped synchronizer declarations thus it was replaced with the DI resolvable configurers, for state machines (IStateMachineConfigurer) and chores (IChoreConfigurer) separately. This solved kind of a dirty approach of StateMachinesPatcher.Register, now the entire configuration is deducible from the container.
Considering excessive usage of SkipHost flag the Send method was split into SendAll and Send without options. This is a temporary solution before the next networking subsystem update.
As a useful legacy from generics usage investigations we now have DynamicMethodDelegate and DynamicFieldAccessor for fast (as opposed to reflection`s Invoke) methods invocation and field getter / setter. These can be used in performance critical sections.
Note: After several attempts to erase state machines generic types from our customizers the only one seemingly good solution was to wrap everything with simple classes and route everything via dynamic delegates, basically making a wrapper for the entire state machines ecosystem, but this is too unjustified just for the sake of improving "excessive generics usage". The best way is to design the system with non-generic access and since we have no control over it - we stuck with this, I guess. Max line length was set to 160 characters long, in hopes to maybe improve readability.
IStateMachineConfigurer
) and chores (IChoreConfigurer
) separately. This solved kind of a dirty approach ofStateMachinesPatcher.Register
, now the entire configuration is deducible from the container.SkipHost
flag theSend
method was split intoSendAll
andSend
without options. This is a temporary solution before the next networking subsystem update.DynamicMethodDelegate
andDynamicFieldAccessor
for fast (as opposed to reflection`sInvoke
) methods invocation and field getter / setter. These can be used in performance critical sections.Note: After several attempts to erase state machines generic types from our customizers the only one seemingly good solution was to wrap everything with simple classes and route everything via dynamic delegates, basically making a wrapper for the entire state machines ecosystem, but this is too unjustified just for the sake of improving "excessive generics usage". The best way is to design the system with non-generic access and since we have no control over it - we stuck with this, I guess. Max line length was set to 160 characters long, in hopes to maybe improve readability.