예제 #1
0
 private void WaitToStop(ZMQ.ZMQDevice.WorkerPool pool)
 {
     while (true)
     {
         var cmd = base.ReceiveControlCommand();
         if (cmd == "STOP-RPC" && pool.IsRunning)
         {
             LoggerProvider.EnvironmentLogger.Info(
                 "'STOP-RPC' command received, try to stop the WorkerPool...");
             StopWorkerPool(pool);
             break;
         }
     }
 }
예제 #2
0
        private static void StopWorkerPool(ZMQ.ZMQDevice.WorkerPool pool)
        {
            Debug.Assert(pool != null);
            Debug.Assert(pool.IsRunning);

            pool.Stop();

            //等待 WorkerPool 停止
            while (pool.IsRunning)
            {
                Thread.Sleep(20);
            }

            Debug.Assert(!pool.IsRunning);
        }
예제 #3
0
        private void WorkerProc()
        {
            var workersUrl = this.RpcHandlerUrl;
            var hostUrl    = this.RpcHostUrl;

            LoggerProvider.EnvironmentLogger.Info(() => string.Format(
                                                      "Starting all RPC-Handler threads: RPC-Entrance URL=[{0}],RPC-Hander URL=[{1}]",
                                                      hostUrl, workersUrl));

            using (var pool = new ZMQ.ZMQDevice.WorkerPool(
                       hostUrl, workersUrl, ServiceDispatcher.ProcessingLoop, (short)this.RpcHandlerMax))
            {
                this.WaitToStop(pool);
            }
        }
예제 #4
0
 private static void Server()
 {
     var pool = new ZMQ.ZMQDevice.WorkerPool("tcp://*:5555", "inproc://workers", Worker, 5);
     Thread.Sleep(Timeout.Infinite);
 }