Server.Network.ByteQueue.Enqueue C# (CSharp) Méthode

Enqueue() public méthode

public Enqueue ( byte buffer, int offset, int size ) : void
buffer byte
offset int
size int
Résultat void
		public void Enqueue( byte[] buffer, int offset, int size )
		{
			if ( (m_Size + size) > m_Buffer.Length )
				SetCapacity( (m_Size + size + 2047) & ~2047 );

			if ( m_Head < m_Tail )
			{
				int rightLength = ( m_Buffer.Length - m_Tail );

				if ( rightLength >= size )
				{
					Buffer.BlockCopy( buffer, offset, m_Buffer, m_Tail, size );
				}
				else
				{
					Buffer.BlockCopy( buffer, offset, m_Buffer, m_Tail, rightLength );
					Buffer.BlockCopy( buffer, offset + rightLength, m_Buffer, 0, size - rightLength );
				}
			}
			else
			{
				Buffer.BlockCopy( buffer, offset, m_Buffer, m_Tail, size );
			}

			m_Tail = ( m_Tail + size ) % m_Buffer.Length;
			m_Size += size;
		}
	}

Usage Example

Exemple #1
0
        private void Receive_Process(SocketAsyncEventArgs e)
        {
            int byteCount = e.BytesTransferred;

            if (e.SocketError != SocketError.Success || byteCount <= 0)
            {
                Dispose(false);
                return;
            }

            m_NextCheckActivity = DateTime.Now + TimeSpan.FromMinutes(1.2);

            byte[] buffer = m_RecvBuffer;

            if (m_Encoder != null)
            {
                m_Encoder.DecodeIncomingPacket(this, ref buffer, ref byteCount);
            }

            lock (m_Buffer)
                m_Buffer.Enqueue(buffer, 0, byteCount);

            m_MessagePump.OnReceive(this);

            lock ( m_AsyncLock ) {
                m_AsyncState &= ~AsyncState.Pending;
            }
        }
All Usage Examples Of Server.Network.ByteQueue::Enqueue