public byte[] Receive(byte[] buffer, int flags, out int size)
{
size = -1;
if (LibXs.xs_msg_init(_message) == -1)
{
return buffer;
}
int bytesReceived = RetryIfInterrupted(() => LibXs.xs_recvmsg(SocketHandle, _message, flags));
if (bytesReceived >= 0)
{
size = bytesReceived;
if (buffer == null || size > buffer.Length)
{
buffer = new byte[size];
}
Marshal.Copy(LibXs.xs_msg_data(_message), buffer, 0, size);
}
if (LibXs.xs_msg_close(_message) == -1)
{
size = -1;
}
return buffer;
}