OpenMetaverse.UDPBase.AsyncBeginReceive C# (CSharp) Méthode

AsyncBeginReceive() private méthode

private AsyncBeginReceive ( ) : void
Résultat void
        private void AsyncBeginReceive()
        {
            // this method actually kicks off the async read on the socket.
            // we aquire a reader lock here to ensure that no other thread
            // is trying to set shutdownFlag and close the socket.
            rwLock.AcquireReaderLock(-1);

            if (!shutdownFlag)
            {
                // increment the count of pending operations
                Interlocked.Increment(ref rwOperationCount);

                // allocate a packet buffer
                //WrappedObject<UDPPacketBuffer> wrappedBuffer = Pool.CheckOut();
                UDPPacketBuffer buf = new UDPPacketBuffer();

                try
                {
                    // kick off an async read
                    udpSocket.BeginReceiveFrom(
                        //wrappedBuffer.Instance.Data,
                        buf.Data,
                        0,
                        UDPPacketBuffer.BUFFER_SIZE,
                        SocketFlags.None,
                        //ref wrappedBuffer.Instance.RemoteEndPoint,
                        ref buf.RemoteEndPoint,
                        new AsyncCallback(AsyncEndReceive),
                        //wrappedBuffer);
                        buf);
                }
                catch (SocketException)
                {
                    // something bad happened
                    //Logger.Log(
                    //    "A SocketException occurred in UDPServer.AsyncBeginReceive()",
                    //    Helpers.LogLevel.Error, se);

                    // an error occurred, therefore the operation is void.  Decrement the reference count.
                    Interlocked.Decrement(ref rwOperationCount);
                }
            }

            // we're done with the socket for now, release the reader lock.
            rwLock.ReleaseReaderLock();
        }