stop connection if we are already connected

This commit is contained in:
Felix Hartmann (PEA3-Fe-FI)
2021-09-23 09:12:03 +02:00
parent 92bc795aff
commit e1ea49bf71
2 changed files with 37 additions and 5 deletions

View File

@@ -37,6 +37,13 @@ namespace PolyChat
public void Connect(string ip)
{
Debug.WriteLine("--- Controller.Connect ---");
if (isInConnections(ip))
{
Debug.WriteLine("---- We have an active connection to this client. ABORT! ----");
CloseChatUI(ip);
//Todo show error!
}
else
Connections.Add(ip, new Connection(ip, PORT, Data => OnMessage(ip, Data), CloseChat));
}
@@ -56,9 +63,16 @@ namespace PolyChat
{
Debug.WriteLine("--- initial packet received ---");
string ForeignIp = data[0].ToString();
//Todo deserialize inital packet and extract ip address
if (isInConnections(ForeignIp))
{
Debug.WriteLine("---- We have an active connection to this client. ABORT! ----");//Todo show error!
CloseChatUI(ForeignIp);
}
else
{
Connections.Add(ForeignIp, new Connection(socket, Data => OnMessage(ForeignIp, Data), CloseChat));
UIController.OnIncomingConnection(ForeignIp);
}
});
});
}
@@ -90,11 +104,24 @@ namespace PolyChat
{
Connections[IP].Close();
Connections.Remove(IP);
CloseChatUI(IP,wasConnected);
}
private void CloseChatUI(string IP, bool wasConnected = true)
{
UIController.OnChatPartnerDeleted(IP);
string heading = wasConnected ? "Connection Closed" : "Connection Failed";
if (!wasConnected)
UIController.ShowConnectionError(IP, heading, $"Connecting to {IP} failed...");
}
private bool isInConnections(string IP)
{
if(Connections.ContainsKey(IP))
return true;
return false;
}
public string getIP()
{
IPHostEntry ipEntry = Dns.GetHostEntry(Dns.GetHostName());

View File

@@ -92,5 +92,10 @@ namespace PolyChat.Models
{
return Connected;
}
public string getIP()
{
return IP;
}
}
}