public override void ExecuteInPrimary(BasicStateMachine basicStateMachine, ref bool saveState) { if (basicStateMachine == null) { throw new ArgumentNullException(nameof(basicStateMachine)); } base.ExecuteInPrimary(basicStateMachine, ref saveState); this.action(); }
public virtual void ExecuteInSecondary(BasicStateMachine basicStateMachine, ref bool saveState) { if (basicStateMachine == null) { throw new ArgumentNullException(nameof(basicStateMachine)); } saveState = false; basicStateMachine.commands.Add(this); }
public static BasicStateMachine CreateSM(int instance, bool designatedPrimary, TestConfig cfg, TestTracer tracer) { ManagedRSLNode[] nodes = new ManagedRSLNode[cfg.Ports.Length / 2]; for (int i = 0; i < nodes.Length; i++) { nodes[i] = BasicStateMachine.CreateNode(cfg.Ports[2 * i], cfg.Ports[(2 * i) + 1]); } BasicStateMachine sm = new BasicStateMachine(tracer, nodes[instance].RslPort, nodes[instance].RslLearnPort); try { sm.CanBP = designatedPrimary; using (ManagedRSLConfigParam rslCfg = SetupConfiguration(cfg.RslData)) { Stopwatch w = Stopwatch.StartNew(); while (true) { if (sm.Initialize(rslCfg, sm.SelfNode, ManagedRSLProtocolVersion.ManagedRSLProtocolVersion_5, false)) { break; } if (w.ElapsedMilliseconds > 10000) { throw new InvalidOperationException("couldn't initialize the SM"); } Thread.Sleep(100); } sm.InitiateBootstrap(nodes, 10); return(sm); } } catch (Exception e) { try { sm.Log("Exception during InitializeStateMachine {0}", e); } catch (Exception) { // ignore } sm.Dispose(); throw; } }
public virtual void ExecuteInPrimary(BasicStateMachine basicStateMachine, ref bool saveState) { if (basicStateMachine == null) { throw new ArgumentNullException(nameof(basicStateMachine)); } saveState = false; Command firstInqueue = basicStateMachine.inflight.Dequeue(); if (firstInqueue != this) { throw new ArgumentException("first in queue should be this command"); } basicStateMachine.commands.Add(this); if (this.OnCompletion != null) { this.OnCompletion(); } }
public static BasicStateMachine.Reference CreateSMSec(int instance, TestConfig cfg, TestTracer tracer) { BasicStateMachine sm = CreateSM(instance, false, cfg, tracer); return(sm.SMReference); }
public Reference(BasicStateMachine sm) { this.sm = sm; }
public override void ExecuteInSecondary(BasicStateMachine basicStateMachine, ref bool saveState) { base.ExecuteInSecondary(basicStateMachine, ref saveState); }