示例#1
0
 /// <summary>
 /// Stops the server totally and disconnect all connections.
 /// </summary>
 public void Stop()
 {
     Message message = new Message(Configuration.localUser, null, "UserDisconnect");
     if (ConnectionOverClient)
     {
         tcpClient.Send(Message.GenerateTCPNotify(message));
     }
     else if (connectionOverServer)
     {
         tcpServer.Send(control.GraphicControl.CurrentlyActiveChatUser, Message.GenerateTCPNotify(message));
     }
     tcpServer.Stop();
     tcpClient.Disconnect();
 }
示例#2
0
 /// <summary>
 /// Generates a message of type TCPNotfy;fromUserName;fromUserId;message
 /// </summary>
 /// <param name="message"></param>
 /// <returns></returns>
 public static string GenerateTCPNotify(Message message)
 {
     return "TCPNotify;" + message.FromUser.Name + ";" + message.FromUser.Id + ";;;" + message.MessageContent;
 }
示例#3
0
 /// <summary>
 /// Generates a message of type TCPMessage;fromUserName;fromUserId;toUserName;toUserId,message
 /// </summary>
 /// <param name="message"></param>
 /// <returns></returns>
 public static string GenerateTCPMessage(Message message)
 {
     return "TCPMessage;" + message.FromUser.Name + ";" + message.FromUser.Id + ";" + message.ToUser.Name + ";" + message.ToUser.Id + ";" + message.MessageContent;
 }
示例#4
0
 /// <summary>
 /// Send a notfiy message to the current open connection
 /// </summary>
 /// <param name="message"></param>
 /// <returns></returns>
 internal bool SendNotify(Message message)
 {
     if (ConnectionOverClient)
     {
         tcpClient.Send(Message.GenerateTCPNotify(message));
     }
     else if (ConnectionOverServer)
     {
         tcpServer.Send(message.ToUser, Message.GenerateTCPNotify(message));
     }
     else
     {
         Logger.LogError("There is currently no connection!");
         return false;
     }
     return true;
 }
示例#5
0
 internal void SetConnectionInformation(Message message)
 {
     control.GraphicControl.InitiateCurrentlyActiveUser(message);
 }
示例#6
0
 /// <summary>
 /// Send the username Change to the remote connection
 /// </summary>
 /// <param name="message"></param>
 internal void RenameUsernameNotifyRemote(Message message)
 {
     SendNotify(message);
 }
示例#7
0
 /// <summary>
 /// Informs the graphical interface about a new currently active user
 /// </summary>
 /// <param name="message"></param>
 internal void NoftifyFromCurrentUser(Message message)
 {
     if (message.MessageContent.StartsWith("UserDisconnect"))
     {
         if (connectionOverClient)
         {
             CloseConnectionFromClient();
         }
         else if (connectionOverServer)
         {
             CloseConnectionFromServer();
         }
     } else if (message.MessageContent.StartsWith("Rename:"))
     {
         control.GraphicControl.InitiateCurrentlyActiveUser(message);
     }
 }
示例#8
0
 /// <summary>
 /// Manages an incoming message from the client. Send message to graphic controller
 /// </summary>
 /// <param name="content"></param>
 internal void IncomingMessage(Message content)
 {
     if (content.FromUser.Equals(control.GraphicControl.CurrentlyActiveChatUser) ||
         control.GraphicControl.CurrentlyActiveChatUser == null)
     {
         control.GraphicControl.ReceiveMessage(content);
     }
 }
示例#9
0
 /// <summary>
 /// Notifys the Gui Thread when there is a new connection established.
 /// </summary>
 /// <param name="tcpAcceptMessage"></param>
 internal void IncomingConnectionFromServer(Message tcpAcceptMessage)
 {
     lock (incomingConnectionLock)
     {
         if (!ConnectionOverClient && !ConnectionOverServer)
         {
             ConnectionOverServer = true;
             control.GraphicControl.CurrentlyActiveChatUser = new ExtendedUser(tcpAcceptMessage.FromUser);
         }
     }
 }
示例#10
0
        /// <summary>
        /// Adds the socket to the connection list, if not exisiting
        /// </summary>
        /// <param name="message"></param>
        /// <param name="handle"></param>
        internal void AddSocketToList(Socket handle, Message message)
        {
            /* Add the new contact to the connection list */
            bool isAlreadyInList = false;
            ExtendedUser exUser = ExtendedUser.ParseFromMessage(message);

            foreach (UserConnection uc in ConnectionList)
            {
                if (uc.Equals(exUser))
                {
                    isAlreadyInList = true;
                    break;
                }
            }
            if (!isAlreadyInList)
            {
                Logger.LogInfo("Add user " + (message.FromUser == null) + " " + (message.ToUser == null) + " ");
                ConnectionList.AddLast(new UserConnection(exUser, handle));
            }
        }