private void SendDebugMessage(string json) { var msg = new NetMQ.NetMQMessage(); msg.Append(new byte[] { 6 }); msg.Append(json); _socket.SendMultipartMessage(msg); }
/// <summary> /// Publish beacon immediately and continue to publish when interval elapsed /// </summary> /// <param name="transmit">Beacon to transmit</param> /// <param name="interval">Interval to transmit beacon</param> public void Publish([NotNull] byte[] transmit, TimeSpan interval) { var message = new NetMQMessage(); message.Append(PublishCommand); message.Append(transmit); message.Append((int)interval.TotalMilliseconds); m_actor.SendMessage(message); }
/// <summary> /// Publish beacon immediately and continue to publish when interval elapsed /// </summary> /// <param name="transmit">Beacon to transmit</param> /// <param name="interval">Interval to transmit beacon</param> public void Publish(string transmit, TimeSpan interval) { NetMQMessage message = new NetMQMessage(); message.Append(PublishCommand); message.Append(transmit); message.Append((int)interval.TotalMilliseconds); m_actor.SendMessage(message); }
/// <summary> /// Configure beacon to bind to specific interface /// </summary> /// <param name="interfaceName">One of the ip address of the interface</param> /// <param name="port">Port to bind to</param> public void Configure([NotNull] string interfaceName, int port) { var message = new NetMQMessage(); message.Append(ConfigureCommand); message.Append(interfaceName); message.Append(port); m_actor.SendMessage(message); Hostname = m_actor.ReceiveFrameString(); }
/// <summary> /// Configure beacon to bind to specific interface /// </summary> /// <param name="interfaceName">One of the ip address of the interface</param> /// <param name="port">Port to bind to</param> public void Configure(string interfaceName, int port) { var message = new NetMQMessage(); message.Append(ConfigureCommand); message.Append(interfaceName); message.Append(port); m_actor.SendMultipartMessage(message); m_boundTo = m_actor.ReceiveFrameString(); }
private static void Signal(this IOutgoingSocket socket, byte status) { long signalValue = 0x7766554433221100L + status; NetMQMessage message = new NetMQMessage(); message.Append(signalValue); socket.SendMessage(message); }
public static void ReceiveMessage(this IReceivingSocket socket, NetMQMessage message, bool dontWait = false) { message.Clear(); bool more = true; while (more) { byte[] buffer = socket.Receive(dontWait, out more); message.Append(buffer); } }
public static NetMQMessage ReceiveMultipartMessage([NotNull] this IReceivingSocket socket, int expectedFrameCount = 4) { var msg = new Msg(); msg.InitEmpty(); var message = new NetMQMessage(expectedFrameCount); do { socket.Receive(ref msg); message.Append(msg.CloneData()); }while (msg.HasMore); msg.Close(); return(message); }
/// <summary> /// Receive a single frame from <paramref name="socket"/>, asynchronously. /// </summary> /// <param name="socket">The socket to receive from.</param> /// <param name="expectedFrameCount">Specifies the initial capacity of the <see cref="List{T}"/> used /// to buffer results. If the number of frames is known, set it here. If more frames arrive than expected, /// an extra allocation will occur, but the result will still be correct.</param> /// <param name="cancellationToken">The token used to propagate notification that this operation should be canceled.</param> /// <returns>The content of the received message.</returns> public static async Task <NetMQMessage> ReceiveMultipartMessageAsync( this NetMQSocket socket, int expectedFrameCount = 4, CancellationToken cancellationToken = default(CancellationToken)) { var message = new NetMQMessage(expectedFrameCount); while (true) { (byte[] bytes, bool more) = await socket.ReceiveFrameBytesAsync(cancellationToken); message.Append(bytes); if (!more) { break; } } return(message); }
public DealerRouter() { const int delay = 3000; //Keep dealersocket reference within each three threads var clientSocketPerThread = new ThreadLocal <DealerSocket>(); using (var server = new RouterSocket("tcp://127.0.0.1:5556")) using (var poller = new NetMQPoller()) { for (int i = 0; i < 3; i++) { Task.Factory.StartNew(state => { DealerSocket client = null; if (!clientSocketPerThread.IsValueCreated) { client = new DealerSocket(); client.Options.Identity = Encoding.Unicode.GetBytes(state.ToString()); client.Connect("tcp://127.0.0.1:5556"); client.ReceiveReady += Client_ReceivedReady; clientSocketPerThread.Value = client; poller.Add(client); } else { client = clientSocketPerThread.Value; } //the dealersocket will provide an identity for message when it is created while (true) { var messageToServer = new NetMQMessage(); messageToServer.AppendEmptyFrame(); messageToServer.Append(state.ToString()); Console.WriteLine("======================================"); Console.WriteLine(" OUTGOING MESSAGE TO SERVER "); Console.WriteLine("======================================"); PrintFrames("Client Sending", messageToServer); client.SendMultipartMessage(messageToServer); Thread.Sleep(delay); } }, string.Format("client {0}", i), TaskCreationOptions.LongRunning); } poller.RunAsync(); while (true) { var clientMessage = server.ReceiveMultipartMessage(); Console.WriteLine("======================================"); Console.WriteLine(" INCOMING CLIENT MESSAGE FROM CLIENT "); Console.WriteLine("======================================"); PrintFrames("Server receiving", clientMessage); if (clientMessage.FrameCount == 3) { var clientAddress = clientMessage[0]; var clientOriginalMessage = clientMessage[2].ConvertToString(); string response = string.Format("{0} back from server {1} address {2}", clientOriginalMessage, DateTime.Now.ToLongTimeString(), clientAddress.ConvertToString()); var messageToClient = new NetMQMessage(); messageToClient.Append(clientAddress); messageToClient.AppendEmptyFrame(); messageToClient.Append(response); server.SendMultipartMessage(messageToClient); } } } }