예제 #1
0
 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");
 }
예제 #3
0
        //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);
                }
            }
        }