Exemplo n.º 1
0
 /// <summary>
 /// Begins receiving the incoming message by handler as
 /// an asynchronous call. It will not block the caller.
 /// </summary>
 /// <param name="handler">An instance of the incoming message handler.</param>
 public void Receive(NetworkIncomingMessageHandler handler)
 {
     if (listener.IsAvailable(identifier))
     {
         incoming.ReceiveOrCallback(handler);
     }
 }
Exemplo n.º 2
0
        public void Process(NetworkIncomingMessageHandler handler, int count)
        {
            if (listener.IsAvailable(identifier))
            {
                if (count > 0)
                {
                    if (offset + length >= memory.Length)
                    {
                        Decrypt(offset + length - memory.Length, count);
                    }
                    else
                    {
                        Decrypt(offset + length, count);
                    }

                    length += count;
                    handler.OnMessage(new NetworkIncomingBufferMessage(this));
                }
                else
                {
                    listener.Disconnect(identifier);
                    handler.OnDisconnected();
                }
            }
        }
Exemplo n.º 3
0
 public NetworkPoolDecrypt(NetworkPoolListener listener, long identifier, NetworkIncomingBuffer buffer, NetworkIncomingMessageHandler handler, int count)
 {
     this.listener   = listener;
     this.identifier = identifier;
     this.buffer     = buffer;
     this.handler    = handler;
     this.count      = count;
 }
Exemplo n.º 4
0
 /// <summary>
 /// Begins receiving data first from the local buffer. If nothing is available
 /// from the remote endpoint. In both cases the caller will be notified in
 /// asynchronous way.
 /// </summary>
 /// <param name="handler">An instance of the incoming message handler.</param>
 public void ReceiveOrCallback(NetworkIncomingMessageHandler handler)
 {
     if (listener.IsAvailable(identifier))
     {
         if (length > 0)
         {
             listener.Schedule(new NetworkPoolReceive(handler, new NetworkIncomingBufferMessage(this)));
         }
         else
         {
             Receive(handler);
         }
     }
 }
Exemplo n.º 5
0
        /// <summary>
        /// Begins receiving data from the remote endpoint. If the buffer already
        /// contains data it will wait anyway for additional remote data. The handler
        /// will be notified in asynchronous way.
        /// </summary>
        /// <param name="handler">An instance of the incoming message handler.</param>
        public void Receive(NetworkIncomingMessageHandler handler)
        {
            if (listener.IsAvailable(identifier))
            {
                int receiveOffset;
                int receiveSize;

                if (offset + length >= memory.Length)
                {
                    receiveOffset = offset + length - memory.Length;
                    receiveSize   = offset - (offset + length) % memory.Length;
                }
                else
                {
                    receiveOffset = offset + length;
                    receiveSize   = memory.Length - offset - length;
                }

                socket.Receive(new SocketBuffer(memory.Data, receiveOffset, receiveSize), context => OnReceived(context, handler));
            }
        }
Exemplo n.º 6
0
 public void Continue(NetworkIncomingMessageHandler handler)
 {
     inner.Continue(handler);
 }
Exemplo n.º 7
0
 public NetworkPoolReceive(NetworkIncomingMessageHandler handler, NetworkIncomingBufferMessage message)
 {
     this.handler = handler;
     this.message = message;
 }
 /// <summary>
 /// Continues handling the message by requesting more bytes from
 /// the remote endpoint. The current message will not be marked as handled
 /// and next message will continue all bytes from current message concatenated
 /// with newly received bytes.
 /// </summary>
 /// <param name="handler">The incoming message handler to use.</param>
 public void Continue(NetworkIncomingMessageHandler handler)
 {
     buffer.Receive(handler);
 }
Exemplo n.º 9
0
 public void Continue(NetworkIncomingMessageHandler handler)
 {
 }
Exemplo n.º 10
0
 private void OnReceived(TcpSocketReceive received, NetworkIncomingMessageHandler handler)
 {
     listener.Schedule(new NetworkPoolDecrypt(listener, identifier, this, handler, received.Count));
 }