private IReadOnlyList <byte[]> Receive() { var res = new List <byte[]>(); var hasMore = true; while (hasMore) { res.Add(_socket.Recv()); hasMore = _socket.HasMoreToRecv(); } return(res); }
private void OnRecvWorker() { var polling = new Polling(PollingEvents.RecvReady, this._socket); polling.RecvReady += socket => { var topic = _socket.RecvString(); var messageInBytes = _socket.Recv(); var message = _deserializer(messageInBytes); this.OnReceived(topic, message); }; try { while (_started) { polling.Poll(1000); } } catch (ZmqException e) { if (LogAdapter.LogEnabled) { LogAdapter.LogDebug(this.GetType().FullName, "BaseSubscriber exception. Disposing. Details: " + e.ToString()); } this.Dispose(); } }
public void Start() { _reply.Bind(_endpoint); var t = new Thread((_) => { try { while (true) { var data = _reply.Recv(); if (data != null) { OnRequestReceived(data, _reply); } } } catch (Exception e) { LogAdapter.LogError("Listener", e.ToString()); } }) { IsBackground = true }; t.Start(); }
private Tuple <T, bool> SendReqAndWaitReply(IZmqSocket socket) { SendRequest(socket); var polling = new Polling(PollingEvents.RecvReady, socket); if (polling.Poll(this.Timeout)) { var data = socket.Recv(); var ret = GetReply(data, socket, false); return(Tuple.Create(ret, false)); } else { // timeout var ret = GetReply(null, socket, true); return(Tuple.Create(ret, true)); } }
private void EventsWorker() { try { while (!_disposed) { var binary = _pairSocket.Recv(); if (binary == null || binary.Length == 0) { continue; } var ev = (MonitorEvents)BitConverter.ToUInt16(binary, 0); int val = 0; if (binary.Length > sizeof(UInt16)) { val = BitConverter.ToInt32(binary, sizeof(UInt16)); } ZmqError error = null; var address = ""; switch (ev) { case MonitorEvents.BindFailed: case MonitorEvents.AcceptFailed: case MonitorEvents.CloseFailed: address = _pairSocket.RecvString(); error = new ZmqError(val); break; case MonitorEvents.MonitorStopped: break; default: address = _pairSocket.RecvString(); break; } FireEvent(ev, address, error); } } catch (ZmqException ex) { if (ex.ZmqErrorCode != ZmqErrorCode.ETERM) { if (LogAdapter.LogEnabled) { LogAdapter.LogError("Monitor", ex.ToString()); } } } catch (Exception e) { if (LogAdapter.LogEnabled) { LogAdapter.LogError("Monitor", e.ToString()); } } finally { this.Dispose(); } }
public static byte[] Recv(this IZmqSocket source, RecvFlags flags) { bool doNotWait = (flags & RecvFlags.DoNotWait) != 0; return(source.Recv(doNotWait)); }