private void EventLoop()
        {
            var addr = context.ConnectionInfo.HeartbeatZmqAddress;

            this.logger.LogDebug("Starting heartbeat server at {Address}.", addr);
            socket = new ResponseSocket();
            socket.Bind(addr);

            while (alive)
            {
                // We use the Bytes receiver so that we can ping back data
                // unmodified, without worrying about encodings.
                try
                {
                    var data = socket.ReceiveFrameBytes();
                    logger.LogDebug($"Got heartbeat message of length {data.Length}.");
                    if (!socket.TrySendFrame(data))
                    {
                        logger.LogError("Error sending heartbeat message back to client.");
                    }
                }
                catch (ThreadInterruptedException)
                {
                    continue;
                }
                catch (Exception ex)
                {
                    logger.LogCritical(ex, "Unhandled exception in heartbeat loop.");
                }
            }
        }
Esempio n. 2
0
        private void ListenerWork()
        {
            AsyncIO.ForceDotNet.Force();
            var spin = new SpinWait();

            using (var server = new ResponseSocket())
            {
                server.Bind(sockname);

                while (!_listenerCancelled)
                {
                    RepReady = false;
                    if (!server.TryReceiveFrameBytes(out ReqProto))
                    {
                        spin.SpinOnce();
                        continue;
                    }
                    ReqReady = true;
                    while (!(RepReady || _listenerCancelled))
                    {
                        spin.SpinOnce();
                    }
                    server.TrySendFrame(RepProto);
                }
            }
            NetMQConfig.Cleanup();
        }
Esempio n. 3
0
        private void StartServerLoop(object state)
        {
            _socket.Bind(_address);

            while (!_stopEvent.Wait(0))
            {
                byte[] data = _socket.ReceiveFrameBytes();

                _logger.LogInformation(System.Text.Encoding.Default.GetString(data));
                // Echoing back whatever was received
                _socket.TrySendFrame(data);
            }
        }
Esempio n. 4
0
        private static void StartHeartbeatLoop(string heartbeatAddress)
        {
            HeartbeatSocket.Bind(heartbeatAddress);

            while (!StopEvent.Wait(0))
            {
                var data = HeartbeatSocket.ReceiveFrameBytes();

                Log.Info(Encoding.Default.GetString(data));
                // Echoing back whatever was received
                HeartbeatSocket.TrySendFrame(data);
            }
        }
Esempio n. 5
0
        private void ProcessMessage(iMessage message)
        {
            if (message is null)
            {
                return;
            }
            if (Object.ReferenceEquals(message.GetType(), typeof(ServiceTask)))
            {
                var service_task = message as ServiceTask;
                service_received(service_task);                 //подписчики
                var resp = ServiseCommandResponder(service_task);

                string answer_delegate_str = json_converter.JsonConverter.serialaze(resp);                 // отвечающий
                server.TrySendFrame(System.TimeSpan.FromSeconds(5), answer_delegate_str);
            }
        }
        private void AnswerRequest([NotNull] ResponseSocket socket, [NotNull] MessageFromServerToClient answer)
        {
            _logger.Info("Sent: " + answer.ServerResponse, _threadId);
            Stopwatch sw = Stopwatch.StartNew();

            byte[]   messageBytes = LZ4MessagePackSerializer.Serialize(answer);
            TimeSpan ts           = new TimeSpan(0, 1, 0);
            bool     success      = socket.TrySendFrame(ts, messageBytes);

            if (!success)
            {
                throw new DistSimException("Failed to transmit answer");
            }

            sw.Stop();
        }
Esempio n. 7
0
        /// SERVER

        static void Main(string[] args)
        {
            string message;
            bool   status;

            using (var responseSocket = new ResponseSocket("@tcp://*:5252"))
            //using (var requestSocket = new RequestSocket(">tcp://localhost:5252"))
            {
                //Console.WriteLine("requestSocket : Sending 'Hello'");
                //requestSocket.SendFrame("Hello");

                //Start and wait for messages
                //Console.WriteLine("Start and wait for messages");
                //Console.ReadLine();
                while (true)
                {
                    status = responseSocket.TryReceiveFrameString(out message);

                    if (status)
                    {
                        Console.WriteLine("responseSocket : Server Received '{0}'", message);
                        status = responseSocket.TrySendFrame("World");
                        if (status)
                        {
                            continue;
                        }
                        else
                        {
                            //May happen that another frame arrives, before sending, may never happen this scenario.
                            responseSocket.TrySkipFrame();
                        }
                    }
                }

                //Console.WriteLine("responseSocket : Server Received '{0}'", message);
                //Console.WriteLine("responseSocket Sending 'World'");


                //responseSocket.SendFrame("World");
                //Console.WriteLine("Received executed, Sent reponse");
                //Console.ReadLine();
                ////message = requestSocket.ReceiveFrameString();
                //Console.WriteLine("requestSocket : Received '{0}'", message);
                //Console.WriteLine("All Done..");
                //Console.ReadLine();
            }
        }
Esempio n. 8
0
        public async Task StartAsync(CancellationToken cancellationToken)
        {
            await Task.Yield();

            _server.Bind(_address);

            using (Logger <Heartbeat> .Log.OnEnterAndExit())
            {
                while (!cancellationToken.IsCancellationRequested)
                {
                    var data = _server.ReceiveFrameBytes();

                    // Echoing back whatever was received
                    _server.TrySendFrame(data);
                }
            }
        }
Esempio n. 9
0
        public Task StartAsync(CancellationToken cancellationToken)
        {
            _server.Bind(_address);
            Task.Run(() =>
            {
                using (Logger <Heartbeat> .Log.OnEnterAndExit())
                {
                    while (!cancellationToken.IsCancellationRequested)
                    {
                        var data = _server.ReceiveFrameBytes();

                        // Echoing back whatever was received
                        _server.TrySendFrame(data);
                    }
                }
            }, cancellationToken);

            return(Task.CompletedTask);
        }