示例#1
0
 /// <summary>
 /// Sends the outgoing message to the remote endpoint.
 /// </summary>
 /// <param name="message">An instance of the outgoing message.</param>
 public void Send(NetworkOutgoingMessage message)
 {
     if (listener.IsAvailable(identifier))
     {
         listener.Schedule(new NetworkPoolSend(identifier, outgoing, message));
     }
     else
     {
         message.Release();
     }
 }
示例#2
0
        public void Send(NetworkOutgoingMessage message, Action callback)
        {
            if (listener.IsAvailable(identifier))
            {
                DataBlock    block  = new NetworkOutgoingBlock(memory.Data, offset, message.Length);
                SocketBuffer buffer = new SocketBuffer(memory.Data, offset, message.Length);

                message.ToBytes(block);
                encryptor?.Encrypt(memory.Data, offset, message.Length);

                offset += message.Length;
                parts.Add(offset);

                socket.Send(buffer, OnSent(callback));
            }
        }
示例#3
0
 public HandshakeConnectionEncryptedMessage(NetworkOutgoingMessage inner, HandshakeKey key)
 {
     this.inner = inner;
     this.key   = key;
 }
示例#4
0
 public NetworkPoolSend(long identifier, NetworkOutgoingBuffer buffer, NetworkOutgoingMessage message)
 {
     this.identifier = identifier;
     this.buffer     = buffer;
     this.message    = message;
 }
示例#5
0
 public void Send(NetworkOutgoingMessage message, HandshakeKey key)
 {
     connection.Send(new HandshakeConnectionEncryptedMessage(message, key));
 }
示例#6
0
 public void Send(NetworkOutgoingMessage message)
 {
     connection.Send(message);
 }