public void Start() { Task.Run(() => { using (var receiver = new PullSocket(Endpoint)) { while (true) { var command = receiver.ReceiveFrameBytes(); var msg = JsonConvert.DeserializeObject <Message>(Encoding.UTF32.GetString(command)); switch (msg.Subject) { case NetMQPeerDirectory.Ack: TestsNetMQContext.Increment(); break; case NetMQPeerDirectory.Command: TestsNetMQContext.Increment(); break; case NetMQPeerDirectory.Event: TestsNetMQContext.Increment(); break; } } } }, _token); Task.Run(async() => { using (var sender = new PushSocket($"{DirectoryEndpoint}")) { var message = new Message() { Endpoint = Endpoint, Subject = NetMQPeerDirectory.RegisterCommand }; var msg = Encoding.UTF32.GetBytes(JsonConvert.SerializeObject(message)); sender.SendFrame(msg); await Task.Delay(100); } }); }
public NetMQPeerDirectory(string inboundSocker, CancellationToken token) { Task.Run(() => { using (var receiver = new PullSocket(inboundSocker)) { while (true) { var command = receiver.ReceiveFrameBytes(); var msg = JsonConvert.DeserializeObject <Message>(Encoding.UTF32.GetString(command)); if (msg.Subject == RegisterCommand) { TestsNetMQContext.Increment(); var peer = msg.Endpoint; lock (_locker) { _peers.Add(peer); using (var sender = new PushSocket(peer)) { var message = new Message() { Subject = NetMQPeerDirectory.Ack }; var ack = Encoding.UTF32.GetBytes(JsonConvert.SerializeObject(message)); sender.SendFrame(ack); } } } } } }, token); }