/// <summary> /// Get an AnpMsg. /// </summary> public AnpMsg GetMsg() { Debug.Assert(transport.DoneReceiving); AnpMsg msg = transport.GetRecv(); transport.BeginRecv(); return(msg); }
/// <summary> /// Retrieve a message from the tunnel. /// </summary> protected AnpMsg GetAnpMsg() { AnpTransport transfer = InternalAnpTunnel.GetTransport(); Debug.Assert(transfer.IsReceiving || transfer.DoneReceiving); Debug.Assert(!transfer.IsSending); while (!transfer.DoneReceiving) { transfer.DoXfer(); if (!transfer.DoneReceiving) { SelectSockets set = new SelectSockets(); InternalAnpTunnel.UpdateSelect(set); Block(set); } } AnpMsg msg = transfer.GetRecv(); transfer.BeginRecv(); return(msg); }