public static byte[] Receive(this IReceivingSocket socket, TimeSpan timeout) { var s = socket as NetMQSocket; if (s == null) { throw new InvalidCastException(string.Format("Expected a NetMQSocket but got a {0}", socket.GetType())); } var result = s.Poll(PollEvents.PollIn, timeout); if (!result.HasFlag(PollEvents.PollIn)) { return(null); } return(socket.Receive()); }