Beispiel #1
0
 private void ListenForMessages(object deferred)
 {
     try
     {
         Deferred d = deferred as Deferred;
         d.Resolve();
         byte[] buffer = new byte[1024 * 1024];
         while (this.IsExpired == false)
         {
             SocketHelpers.Read(this, client, buffer, 4);
             if (this.IsExpired)
             {
                 return;
             }
             var messageLength = BitConverter.ToInt32(buffer, 0);
             SocketHelpers.Read(this, client, buffer, messageLength);
             if (this.IsExpired)
             {
                 return;
             }
             var messageText = Encoding.UTF8.GetString(buffer, 0, messageLength);
             MessageReceived.Fire(messageText);
         }
     }
     catch (Exception ex)
     {
         Disconnected.Fire(ex);
         this.Dispose();
     }
 }
Beispiel #2
0
 private void Connection_ConnectionLost(object sender, DisconnectEventArgs e)
 {
     if (e.Reason == DisconnectReason.UserInitiated)
     {
         Disconnected.Fire(this, e);
     }
     else
     {
         ConnectionLost.Fire(this, e);
     }
 }
Beispiel #3
0
 public void SendMessage(string message)
 {
     try
     {
         var bytes       = Encoding.UTF8.GetBytes(message);
         var lengthBytes = BitConverter.GetBytes(bytes.Length);
         var sent        = client.Send(lengthBytes);
         if (sent != lengthBytes.Length)
         {
             throw new Exception("WTF");
         }
         sent = client.Send(bytes);
         if (sent != bytes.Length)
         {
             throw new Exception("WTF");
         }
     }
     catch (Exception ex)
     {
         Disconnected.Fire(ex);
         Dispose();
     }
 }