private void ConversationWindow_Load(object sender, System.EventArgs e) { for (int i = 0; i < otherUsernames.Count; i++) { IClientObj newClient = (IClientObj)RemotingServices.Connect(typeof(IClientObj), otherUsersAddresses[i]); newClient.SetupConnection(); otherClients.Add(otherUsernames[i], newClient); } }
public void YesToProposal(string proposalSenderUsername, string proposalReceiverUsername) { Console.WriteLine("Yes received from " + proposalReceiverUsername); List <string> usernames = new List <string>(); List <string> addresses = new List <string>(); string proposalSenderAddress = GetUserAddress(proposalSenderUsername); usernames.Add(proposalSenderUsername); addresses.Add(proposalSenderAddress); conversationProposals[proposalSenderUsername][proposalReceiverUsername] = true; foreach (KeyValuePair <string, bool> entry in conversationProposals[proposalSenderUsername]) { if (entry.Value == false) { return; } usernames.Add(entry.Key); addresses.Add(GetUserAddress(entry.Key)); } Console.WriteLine("All users accepted " + proposalSenderUsername + "'s proposal."); // If reaches this code, all receivers have already accepted the conversation IClientObj clientObjSender = (IClientObj)RemotingServices.Connect(typeof(IClientObj), (string)proposalSenderAddress); List <MessageModel> previousMessages = new List <MessageModel>(); string chatName = GetChatNameWithUsernames(usernames); ChatModel existentChat = SearchForChat(chatName); if (existentChat == null) { CreateChatInDB(chatName, usernames); previousMessages = null; } else { previousMessages = existentChat.Messages; } foreach (KeyValuePair <string, bool> entry in conversationProposals[proposalSenderUsername]) { string proposalReceiverAddress = GetUserAddress(entry.Key); new Thread(() => { IClientObj clientObjReceiver = (IClientObj)RemotingServices.Connect(typeof(IClientObj), (string)proposalReceiverAddress); Console.WriteLine("Telling " + entry.Key + " to start chat."); clientObjReceiver.StartChat(chatName, usernames, addresses, previousMessages); }).Start(); } new Thread(() => { Console.WriteLine("Telling " + proposalSenderUsername + " to start chat."); clientObjSender.StartChat(chatName, usernames, addresses, previousMessages); }).Start(); }
/* * Conversation Initiation methods */ public void SendConversationProposal(string proposalSenderUsername, List <string> proposalReceiverUsernames) { Dictionary <string, bool> usersToAcceptProposal = new Dictionary <string, bool>(); foreach (string proposalReceiverUsername in proposalReceiverUsernames) { usersToAcceptProposal[proposalReceiverUsername] = false; string proposalReceiverAddress = GetUserAddress(proposalReceiverUsername); IClientObj clientObjReceiver = (IClientObj)RemotingServices.Connect(typeof(IClientObj), (string)proposalReceiverAddress); new Thread(() => { clientObjReceiver.ReceiveProposal(proposalSenderUsername, proposalReceiverUsernames); }).Start(); } conversationProposals[proposalSenderUsername] = usersToAcceptProposal; }