Esempio n. 1
0
 protected void Handle_Message(IWCMessage message)
 {
     switch (message.MessageType)
     {
         case WCMessageType.CONNECTREQUEST:
             break;
         case WCMessageType.CONNECTACCEPT:
             SendConnectedEvent(message);
             break;
         case WCMessageType.CONNECTDENY:
             CommunicationChannel.Disconnect(false);
             SendDisconnectedEvent(message);
             break;
         case WCMessageType.MESSAGE:
             SendMessageReceivedEvent(message);
             break;
         case WCMessageType.SERVER:
             SendMessageReceivedEvent(message);
             break;
         case WCMessageType.DISCONNECT:
             CommunicationChannel.Disconnect(false);
             SendDisconnectedEvent(message);
             break;
         default:
             break;
     }
 }
Esempio n. 2
0
 protected void SendMessageReceivedEvent(IWCMessage message)
 {
     EventHandler<WCMessageEventArg> handler = MessageRecieved;
     if (handler != null)
     {
         handler(this, new WCMessageEventArg(message));
     }
 }
Esempio n. 3
0
 protected void SendDisconnectedEvent(IWCMessage message)
 {
     EventHandler<WCMessageEventArg> handler = Disconnected;
     if (handler != null)
     {
         handler(this, new WCMessageEventArg(message));
     }
 }
Esempio n. 4
0
 public override byte[] GetBytes(IWCMessage message)
 {
     if (message == null)
     {
         return null;
     }
     byte[] data = Serialize(message);
     byte[] message_length = new byte[headersize];
     BitConverter.GetBytes(data.Length).CopyTo(message_length, 0);
     byte[] result = new byte[data.Length + headersize];
     message_length.CopyTo(result, 0);
     data.CopyTo(result, headersize);
     return result;
 }
Esempio n. 5
0
 protected void HandleConnectionRequest(IWCMessage message)
 {
     if (pendingAuth)
     {
         if (message.Message.Length > 0)
         {
             Username = message.Message;
             pendingAuth = false;
             SendConnectionAcceptEvent();
         }
         else
         {
             IWCMessage denyMessage = new WCMessage("Connection Refused: Username was empty.", WCMessageType.CONNECTDENY);
             SendConnectionDenyEvent(denyMessage);
             Debug.WriteLine("HandleConnectioRequest() failed due to message.legnth not greater then 0");
         }
     }
     else
     {
         Debug.WriteLine("HandleConnectioRequest() failed due to pendingAuth = false");
     }
 }
        public override void SendMessage(IWCMessage message)
        {
            if (message == null)
            {
                return;
            }
            byte[] data = null;
            try
            {
                data = WireProtocol.GetBytes(message);
            }
            catch (Exception)
            {

                throw;
            }
            int total_sent = 0;
            lock(communication_lock)
            {
                try
                {
                    while (total_sent < data.Length)
                    {
                        int sent = client.Client.Send(data, total_sent, data.Length - total_sent, SocketFlags.None);
                        if (sent <= 0)
                        {
                            throw new Exception("Failed to send TCP message.");
                        }
                        total_sent += sent;
                        LastMessageSentDateStamp = DateTime.Now;
                        SendMessageSentEvent(message);
                    }
                }
                catch (Exception ex)
                {
                    Debug.WriteLine(ex.Message);
                }
            }
        }
Esempio n. 7
0
 protected void SendDisconnectEvent(IWCMessage message)
 {
     EventHandler<WCServerClientEventArgs> handler = Disconnected;
     String disconnectMsg = "***" + Username + " has disconnected ( " + message.Message + " )";
     IWCMessage discoMessage = new WCMessage(disconnectMsg, WCMessageType.SERVER);
     if (handler != null)
     {
         handler(this, new WCServerClientEventArgs(ClientID, Username, discoMessage));
     }
 }
Esempio n. 8
0
 protected void SendConnectionDenyEvent(IWCMessage message)
 {
     EventHandler<WCServerClientEventArgs> handler = ConnectionDenied;
     if (handler != null)
     {
         handler(this, new WCServerClientEventArgs(ClientID, Username, message));
     }
 }
Esempio n. 9
0
 protected void SendMessageEvent(IWCMessage message)
 {
     EventHandler<WCMessageEventArg> handler = MessageRecieved;
     String msgWithUsername = "******" + Username + "> " + message.Message;
     WCMessageEventArg eventMessage = new WCMessageEventArg(new WCMessage(msgWithUsername, WCMessageType.MESSAGE));
     if (handler != null)
     {
         handler(this, eventMessage);
     }
 }
Esempio n. 10
0
 public WCMessageEventArg(IWCMessage message)
 {
     Message = message;
 }
Esempio n. 11
0
 public abstract void Disconnect(IWCMessage message);
Esempio n. 12
0
 protected void SendMessage(IWCMessage message)
 {
     foreach (var client in clients.Values)
     {
         client.CommunicationChannel.SendMessage(message);
     }
 }
 public WCServerClientEventArgs(Guid clientID, String username, IWCMessage message)
 {
     ClientID = clientID;
     Username = username;
     Message = message;
 }
Esempio n. 14
0
 public void SendMessage(IWCMessage message)
 {
     CommunicationChannel.SendMessage(message);
 }
Esempio n. 15
0
 public override void Disconnect(IWCMessage message)
 {
     CommunicationChannel.SendMessage(message);
     CommunicationChannel.Disconnect(false);
 }
Esempio n. 16
0
 public abstract byte[] GetBytes(IWCMessage message);
 public abstract void SendMessage(IWCMessage message);