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."); } } }
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(); }
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); } }
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); } }
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(); }
/// 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(); } }
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); } } }
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); }