Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class DisengagedState : State
- {
- protected override void OnEntry(StateHandlerInfo<State> info)
- {
- Console.WriteLine("Entering Disengaged State");
- //TODO : Cancel All Orders
- base.OnEntry(info);
- }
- protected override void OnExit(StateHandlerInfo<State> info)
- {
- Console.WriteLine("Exiting Disengaged State");
- base.OnExit(info);
- }
- }
- public class EngagedState : State
- {
- protected override void OnEntry(StateHandlerInfo<State> info)
- {
- Console.WriteLine("Entering Engaged State");
- base.OnEntry(info);
- }
- protected override void OnExit(StateHandlerInfo<State> info)
- {
- Console.WriteLine("Exiting Engaged State");
- base.OnExit(info);
- }
- protected override State HandleEvent(IEvent @event, object data)
- {
- // Can force transition to a particular state, like a dynamic transition
- return null;
- }
- }
- public class TradingRig
- {
- StateMachine FSM;
- Event EngageEvent = new Event("Engage");
- Event DisengageEvent = new Event("Disengage");
- public void BuildStateMachine()
- {
- FSM = new StateMachine("Trading Rig");
- var disengagedState = FSM.CreateInitialState<DisengagedState>("Disengaged");
- var engagedState = FSM.CreateState<EngagedState>("Engaged");
- disengagedState.TransitionOn(EngageEvent).To(engagedState);
- engagedState.TransitionOn(DisengageEvent).To(disengagedState);
- }
- public void Engage()
- {
- EngageEvent.Fire();
- }
- public void Disengage()
- {
- DisengageEvent.Fire();
- }
- }
- void Main()
- {
- TradingRig Rig = new TradingRig();
- Rig.BuildStateMachine();
- Rig.Engage();
- Rig.Disengage();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement