Ejemplo n.º 1
0
        internal unsafe void ReciveInternal()
        {
            RioBufferSegment buf;

            if (ReceiveBufferPool.TryGetBuffer(out buf))
            {
                if (!RioStatic.Receive(_requestQueue, buf.SegmentPointer, 1, RIO_RECEIVE_FLAGS.NONE, buf.Index))
                {
                    WinSock.ThrowLastWSAError();
                }
            }
            else
            {
                ThreadPool.QueueUserWorkItem(o =>
                {
                    var b = ReceiveBufferPool.GetBuffer();
                    if (!RioStatic.Receive(_requestQueue, ReceiveBufferPool.GetBuffer().SegmentPointer, 1, RIO_RECEIVE_FLAGS.NONE, b.Index))
                    {
                        WinSock.ThrowLastWSAError();
                    }
                }, null);
            }
        }
Ejemplo n.º 2
0
 public RioBufferSegment BeginReceive()
 {
     Debug.Assert(inUse);
     return(BeginReceive(ReceiveBufferPool.GetBuffer()));
 }