public int Forward(IntPtr destinationHandle)
{
if (LibXs.xs_msg_init(_message) == -1)
{
return -1;
}
int receiveMore;
int bytesSent;
do
{
if (LibXs.xs_recvmsg(SocketHandle, _message, 0) == -1)
{
return -1;
}
if (GetReceiveMore(out receiveMore) == -1)
{
return -1;
}
if ((bytesSent = LibXs.xs_sendmsg(destinationHandle, _message, receiveMore == 1 ? (int)SocketFlags.SendMore : 0)) == -1)
{
return -1;
}
}
while (receiveMore == 1);
if (LibXs.xs_msg_close(_message) == -1)
{
return -1;
}
return bytesSent;
}