public static void ProcessData(ref ValkQueueWFMessage WFMessage) { //default, automatically complete everything if (StepHandlers.ContainsKey(WFMessage.Step.HandleCategory)) { StepHandlers[WFMessage.Step.HandleCategory].HandleStep(ref WFMessage); } else { if (DefaultHandler == null) { Console.WriteLine("No handler for " + WFMessage.Step.HandleCategory + " and no default provided"); } else { DefaultHandler.HandleStep(ref WFMessage); } } }
public virtual void HandleStep(ref ValkQueueWFMessage WFMessage) { //Default behavior. Please override and do something useful instead. WFMessage.Command = ValkQueueWFMessage.WFCommand.WFC_COMPLETE; //Console.WriteLine("Default Behavior: Autocompleting step"); }
//public void Initialize() //{ // Thread Processor; // Processor = new Thread(new ThreadStart(ValkQueueWFSteps.RunQueue)); // Processor.Start(); //} public static void RunProcessor() { if (QueueContext == null) { QueueContext = new Context(1); } //throw new System.Exception("QueueContext not set"); QueueComm = QueueContext.Socket(SocketType.REQ); QueueComm.Connect("tcp://127.0.0.1:5000"); /* ActivatorIntraComm.Bind("tcp://*:5001"); ActivatorControllerIntraComm = ActContext.Socket(SocketType.REP); ActivatorControllerIntraComm.Connect("inproc://activatorcontrol"); QueueComm = ActContext.Socket(SocketType.REQ); QueueComm.Connect("tcp://127.0.0.1:5000"); * */ ValkQueueWFMessage WFMessage = new ValkQueueWFMessage(); WFMessage.Command = ValkQueueWFMessage.WFCommand.WFC_CANPROCESS; while (true) { try { //Thread.Sleep(10000); QueueComm.Send<ValkQueueWFMessage>(WFMessage); WFMessage = QueueComm.Recv<ValkQueueWFMessage>(); } catch (ZMQ.Exception ex) { Console.WriteLine(ex.Message); } if (WFMessage.Command == ValkQueueWFMessage.WFCommand.WFC_WAIT) { Thread.Sleep(5000); WFMessage.Command = ValkQueueWFMessage.WFCommand.WFC_CANPROCESS; } else { if(WFMessage.Command != ValkQueueWFMessage.WFCommand.WFC_CANPROCESS) ProcessData(ref WFMessage); } } }