public override void Invoke(int threadID, ZingerPluginState ZPluginState, params object[] Params) { var par1_MachineStringName = (string)Params[1]; var par2_StateStringName = (string)Params[2]; if (!sc.StatesReached.ContainsKey(par1_MachineStringName)) { ConcurrentDictionary<string, bool> temp = new ConcurrentDictionary<string, bool>(); temp.TryAdd(par2_StateStringName, true); sc.StatesReached.TryAdd(par1_MachineStringName, temp); } else { ConcurrentDictionary<string, bool> temp; var getStateList = sc.StatesReached.TryGetValue(par1_MachineStringName, out temp); temp.TryAdd(par2_StateStringName, true); } }
public override void Invoke(int threadID, ZingerPluginState ZPluginState, params object[] Params) { var functionName = (string)Params[0]; if (functionName == "GenerateMotionPlan") { int start = (int)Params[1]; int end = (int)Params[2]; throw new ZingerInvokeMotionPlanning(start, end, complanState[threadID].Obstacles); } else if (functionName == "AddObstacle") { complanState[threadID].Obstacles.Add((int)Params[1]); } else if (functionName == "ResetObstacle") { complanState[threadID].Obstacles = new List<int>(); } }
public abstract void Invoke(int threadID, ZingerPluginState ZPluginState, params object[] Params);
protected TraversalInfo(StateImpl s, StateType st, TraversalInfo pred, Via bt) { stateType = st; Via = bt; NumProcesses = s.NumProcesses; ProcessInfo = s.GetProcessInfo(); events = s.GetEvents(); exception = s.Exception; IsAcceptingState = s.IsAcceptingState; //initialize the plugin information. if (pred != null) { Predecessor = pred; CurrentDepth = pred.CurrentDepth + 1; zBounds = new ZingerBounds(pred.zBounds.ExecutionCost, pred.zBounds.ChoiceCost); zBounds.IncrementDepthCost(); doDelay = false; if (ZingerConfiguration.DoDelayBounding) { ZingDBSchedState = s.ZingDBSchedState; ZingDBScheduler = s.ZingDBScheduler; } else if (ZingerConfiguration.DoPreemptionBounding) { preemptionBounding = new ZingPreemptionBounding(ProcessInfo, NumProcesses, Predecessor.preemptionBounding.currentProcess); } if (ZingerConfiguration.DronacharyaEnabled || ZingerConfiguration.IsPluginEnabled) { ZingerPlugin = s.ZingerPlugin; ZingerPluginState = s.ZingerPluginState; } pred.Successor = this; MagicBit = pred.MagicBit; } else { zBounds = new ZingerBounds(); MagicBit = false; CurrentDepth = 0; if (ZingerConfiguration.DoDelayBounding) { ZingDBSchedState = s.ZingDBSchedState.Clone(false); ZingDBScheduler = s.ZingDBScheduler; } else if (ZingerConfiguration.DoPreemptionBounding) { preemptionBounding = new ZingPreemptionBounding(ProcessInfo, NumProcesses, 0); } if (ZingerConfiguration.DronacharyaEnabled || ZingerConfiguration.IsPluginEnabled) { ZingerPlugin = s.ZingerPlugin; ZingerPluginState = s.ZingerPluginState.Clone(); } } }