示例#1
0
文件: Server.cs 项目: mgpsp/TDIN-FEUP
    public void RequestAccepted(String sender, String receiver)
    {
        IClientRem remSender   = (IClientRem)RemotingServices.Connect(typeof(IClientRem), (string)activeUsers[sender]);
        IClientRem remReceiver = (IClientRem)RemotingServices.Connect(typeof(IClientRem), (string)activeUsers[receiver]);

        remSender.RequestAccepted(receiver, (string)activeUsers[receiver]);
        remReceiver.ReceiveAddress(sender, (string)activeUsers[sender]);
    }
示例#2
0
 private void ChangeActiveUser(String username)
 {
     if (!groupChatActive)
     {
         activeUserRemObj = (IClientRem)RemotingServices.Connect(typeof(IClientRem), (string)activeUsers[username]);
     }
     activeUser = username;
 }
示例#3
0
文件: Server.cs 项目: mgpsp/TDIN-FEUP
    public void AddUserToGroupChat(String groupChatName, String username)
    {
        GroupChat gc = (GroupChat)groupChats[groupChatName];

        foreach (string user in gc.users)
        {
            IClientRem rem = (IClientRem)RemotingServices.Connect(typeof(IClientRem), (string)activeUsers[user]);
            rem.AddUserToGroupChat(username, groupChatName);
        }
        gc.users.Add(username);
    }
示例#4
0
文件: Server.cs 项目: mgpsp/TDIN-FEUP
    public void SendGroupChatMessage(String name, Message msg)
    {
        GroupChat gc = (GroupChat)groupChats[name];

        foreach (string username in gc.users)
        {
            if (username != msg.sender)
            {
                IClientRem rem = (IClientRem)RemotingServices.Connect(typeof(IClientRem), (string)activeUsers[username]);
                rem.ReceiveMessage(msg);
            }
        }
    }
示例#5
0
文件: Server.cs 项目: mgpsp/TDIN-FEUP
 public Boolean RegisterAddress(String username, string address)
 {
     if (activeUsers.Contains(username))
     {
         return(false);
     }
     else
     {
         IClientRem rem = (IClientRem)RemotingServices.Connect(typeof(IClientRem), address); // Obtain a reference to the client remote object
         Console.WriteLine("[SingleServer]: Sending active clients list");
         activeUsers.Add(username, address);
         Console.WriteLine("[SingleServer]: Registered " + address);
         NotifyClients(Operation.Add, username);
         return(true);
     }
 }
示例#6
0
文件: Server.cs 项目: mgpsp/TDIN-FEUP
 public void Logout(String username)
 {
     activeUsers.Remove(username);
     foreach (GroupChat gc in groupChats.Values)
     {
         if (gc.users.Contains(username))
         {
             gc.users.Remove(username);
             foreach (string user in gc.users)
             {
                 IClientRem rem = (IClientRem)RemotingServices.Connect(typeof(IClientRem), (string)activeUsers[user]);
                 rem.RemoveUserFromGroupChat(username, gc.name);
             }
         }
     }
     NotifyClients(Operation.Remove, username);
 }
示例#7
0
 public InviteWindow(ActiveUser user, string chatName, RemoteChat chat, string id)
 {
     try
     {
         Console.WriteLine(user.Username, user.Address);
         InitializeComponent();
         label1.Text       += user.Username;
         nameOfTheChat.Text = user.Username != chatName ?  "Chat Name " + chatName : "";
         _iFriend           = (IClientRem)RemotingServices.Connect(typeof(IClientRem), user.Address);
         _user     = user;
         _chatName = chatName;
         _chat     = chat;
         _id       = id;
     } catch (Exception e)
     {
         Console.WriteLine(e);
     }
 }
示例#8
0
        private void CreateChat_Click(object sender, EventArgs e)
        {
            List <ActiveUser> users = new List <ActiveUser>();

            var  selectedUsers = listView1.SelectedItems;
            bool groupChat     = selectedUsers.Count > 1;

            for (var index = 0; index < selectedUsers.Count; index++)
            {
                foreach (var contact in _onlineUsers)
                {
                    if (contact.Username.Equals(selectedUsers[index].Text))
                    {
                        users.Add(contact);

                        break;
                    }
                }
            }


            string id     = CreateID(users);
            bool   exists = ClientApp.GetInstance().GetPendingChats().Contains(id) || ClientApp.GetInstance().GetChats().ContainsKey(id);

            if (users.Count == 1 && !exists)
            {
                IClientRem friend = (IClientRem)RemotingServices.Connect(typeof(IClientRem), users[0].Address);
                ClientApp.GetInstance().GetPendingChats().Add(id);
                RemoteChat chat = new RemoteChat();

                Task.Factory.StartNew(() =>
                {
                    try
                    {
                        friend.Invite(new ControlMessage(ClientApp.GetLoggedUser(), Client.ClientApp.GetLoggedUser().Username, chat, id));
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine("Invitation Failed");
                        Console.WriteLine(e);
                    }
                    Console.WriteLine("success");
                });
            }
            else if (users.Count > 1 && !exists)
            {
                Form1 chatNameForm = new Form1();
                chatNameForm.ShowDialog();
                RemoteChat chat = new RemoteChat();

                foreach (var user in users)
                {
                    IClientRem friend = (IClientRem)RemotingServices.Connect(typeof(IClientRem), user.Address);

                    Task.Factory.StartNew(() =>
                    {
                        Console.WriteLine(@"Invitation sent to " + user.Username + " to join " + chatNameForm.GetText);
                        try
                        {
                            friend.Invite(new ControlMessage(ClientApp.GetLoggedUser(), chatNameForm.GetText, chat, id));
                        }
                        catch (Exception e)
                        {
                            Console.WriteLine("Invitation Failed");
                            Console.WriteLine(e);
                        }
                        Console.WriteLine("success");
                    });
                }
            }
            else if (users.Count < 1)
            {
                MessageBox.Show("Please select a user of a group of users",
                                "No user was selected",
                                MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else
            {
                MessageBox.Show("Chat already created or Invites sent", "Already Created",
                                MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }
示例#9
0
文件: Server.cs 项目: mgpsp/TDIN-FEUP
    public void InviteUserToGroup(String username, String groupChatName)
    {
        IClientRem rem = (IClientRem)RemotingServices.Connect(typeof(IClientRem), (string)activeUsers[username]);

        rem.InvitedToGroupChat(groupChatName);
    }
示例#10
0
文件: Server.cs 项目: mgpsp/TDIN-FEUP
    public void RequestRefused(String sender, String receiver)
    {
        IClientRem remSender = (IClientRem)RemotingServices.Connect(typeof(IClientRem), (string)activeUsers[sender]);

        remSender.RequestRefused(receiver);
    }
示例#11
0
文件: Server.cs 项目: mgpsp/TDIN-FEUP
    public void RequestConversation(String sender, String receiver)
    {
        IClientRem rem = (IClientRem)RemotingServices.Connect(typeof(IClientRem), (string)activeUsers[receiver]);

        rem.ReceiveRequest(sender);
    }