// WHen we get a connection private void InitConnection(Socket s) { // Read info here RequestConnectMessage msg = (RequestConnectMessage)JsonConvert.DeserializeObject(ReceiveMessage(s), typeof(RequestConnectMessage)); string ip = s.RemoteEndPoint.ToString(); // TODO: change port to RequestConnectMessage.Port Application.Current.Dispatcher.Invoke(() => { Actions.OpenDialog(typeof(AcceptDeclineDialog), new AcceptDeclineDialogViewModel(ip, msg.Sender, parameter => AcceptConnection(s, msg.id, msg.Sender, ip), parameter => DeclineConnection(s))); }); }
public void ConnectCallback(IAsyncResult ar) { Socket client = (Socket)ar.AsyncState; try { client.EndConnect(ar); } catch (Exception e) // TODO: Narrower catch. Check what it throws and when { Console.WriteLine(e); } if (!client.Connected) { OnDisconnect(); Actions.HandleBugException(new NoConnectionException(), "Could not establish connection."); return; } RequestConnectMessage msg = new RequestConnectMessage(this.Model.Username, this.Model.id); string strMsg = msg.Serialize(); client.Send(Encoding.UTF8.GetBytes(strMsg)); AcceptDeclineMessage acceptDeclineMessage = (AcceptDeclineMessage)JsonConvert.DeserializeObject(ReceiveMessage(client), typeof(AcceptDeclineMessage)); if (acceptDeclineMessage.IsAccepted) { string ip = client.RemoteEndPoint.ToString(); // TODO: change port to RequestConnectMessage.Port setCurrentConnection(acceptDeclineMessage.id, acceptDeclineMessage.Sender, ip); StartRecieve(client); } else { OnDisconnect(); Actions.HandleBugException(new NoConnectionException(), "Other user did not accept."); } }