Advertisement
GlobalLiquidity

Untitled

Mar 5th, 2019
192
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.58 KB | None | 0 0
  1.  
  2. public class DisengagedState : State
  3. {
  4.     protected override void OnEntry(StateHandlerInfo<State> info)
  5.     {
  6.         Console.WriteLine("Entering Disengaged State");
  7.         //TODO : Cancel All Orders
  8.         base.OnEntry(info);
  9.     }
  10.  
  11.     protected override void OnExit(StateHandlerInfo<State> info)
  12.     {
  13.         Console.WriteLine("Exiting Disengaged State");
  14.         base.OnExit(info);
  15.     }
  16. }
  17.  
  18. public class EngagedState : State
  19. {
  20.     protected override void OnEntry(StateHandlerInfo<State> info)
  21.     {
  22.         Console.WriteLine("Entering Engaged State");
  23.         base.OnEntry(info);
  24.     }
  25.  
  26.     protected override void OnExit(StateHandlerInfo<State> info)
  27.     {
  28.         Console.WriteLine("Exiting Engaged State");
  29.         base.OnExit(info);
  30.     }
  31.  
  32.     protected override State HandleEvent(IEvent @event, object data)
  33.     {
  34.         // Can force transition to a particular state, like a dynamic transition
  35.  
  36.         return null;
  37.     }
  38. }
  39.  
  40. public class TradingRig
  41. {
  42.     StateMachine FSM;
  43.  
  44.     Event EngageEvent = new Event("Engage");
  45.     Event DisengageEvent = new Event("Disengage");
  46.  
  47.     public void BuildStateMachine()
  48.     {
  49.         FSM = new StateMachine("Trading Rig");
  50.         var disengagedState = FSM.CreateInitialState<DisengagedState>("Disengaged");
  51.         var engagedState = FSM.CreateState<EngagedState>("Engaged");   
  52.         disengagedState.TransitionOn(EngageEvent).To(engagedState);
  53.         engagedState.TransitionOn(DisengageEvent).To(disengagedState);     
  54.     }
  55.    
  56.     public void Engage()
  57.     {
  58.         EngageEvent.Fire();    
  59.     }
  60.    
  61.     public void Disengage()
  62.     {
  63.         DisengageEvent.Fire();
  64.     }
  65.    
  66. }
  67.  
  68.  
  69. void Main()
  70. {
  71.     TradingRig Rig = new TradingRig();
  72.     Rig.BuildStateMachine();
  73.     Rig.Engage();
  74.     Rig.Disengage();   
  75. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement