Exemple #1
0
        private TcpSocketSendCallback OnSent(Action callback)
        {
            return(sent =>
            {
                listener.Schedule(() =>
                {
                    if (listener.IsAvailable(identifier))
                    {
                        if (sent.Status != SocketStatus.OK || sent.Count == 0)
                        {
                            listener.Disconnect(identifier);
                        }

                        if (sent.Count > 0)
                        {
                            listener.HandleSent(identifier, sent.Count);
                        }
                    }

                    parts.Remove(sent.Buffer.Offset + sent.Buffer.Count);
                    offset = parts.Count > 0 ? parts.Max() : 0;

                    callback.Invoke();
                });
            });
        }
 /// <summary>
 /// Terminates the connection with the remote endpoint.
 /// </summary>
 public void Terminate()
 {
     if (listener.IsAvailable(identifier))
     {
         listener.Disconnect(identifier);
     }
 }
        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();
                }
            }
        }