Esempio n. 1
0
        /// <summary>
        /// Get an AnpMsg.
        /// </summary>
        public AnpMsg GetMsg()
        {
            Debug.Assert(transport.DoneReceiving);
            AnpMsg msg = transport.GetRecv();

            transport.BeginRecv();
            return(msg);
        }
Esempio n. 2
0
        /// <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);
        }