exception when message cannot be send
This commit is contained in:
@@ -21,8 +21,6 @@ namespace PolyChat.Models
|
|||||||
this.Ip = Ip;
|
this.Ip = Ip;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
override
|
override
|
||||||
public string ToString()
|
public string ToString()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ using Json.Net;
|
|||||||
using System.Net;
|
using System.Net;
|
||||||
using SocketIOSharp.Common.Packet;
|
using SocketIOSharp.Common.Packet;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
|
using PolyChat.Models.Exceptions;
|
||||||
|
|
||||||
namespace PolyChat.Models
|
namespace PolyChat.Models
|
||||||
{
|
{
|
||||||
@@ -49,11 +50,22 @@ namespace PolyChat.Models
|
|||||||
//convert msg
|
//convert msg
|
||||||
String petJson = JsonNet.Serialize(msg);
|
String petJson = JsonNet.Serialize(msg);
|
||||||
|
|
||||||
//send msg
|
//wait if not connected and send msg
|
||||||
|
int i=0;
|
||||||
|
int sleeptimer = 2000;
|
||||||
|
while(!this.connected)
|
||||||
|
{
|
||||||
|
Thread.Sleep(sleeptimer);
|
||||||
|
i++;
|
||||||
|
if(i>=10)
|
||||||
|
{
|
||||||
|
throw new MessageTimedOutException(i*sleeptimer);
|
||||||
|
}
|
||||||
|
}
|
||||||
connection.Emit(code.ToString(), petJson);
|
connection.Emit(code.ToString(), petJson);
|
||||||
}).Start();
|
}).Start();
|
||||||
}
|
}
|
||||||
|
/*
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Sends Message with new name
|
/// Sends Message with new name
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -74,6 +86,7 @@ namespace PolyChat.Models
|
|||||||
connection.Emit(code.ToString(), petJson);
|
connection.Emit(code.ToString(), petJson);
|
||||||
}).Start();
|
}).Start();
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
//==================================================================================
|
//==================================================================================
|
||||||
//EventHandeling
|
//EventHandeling
|
||||||
@@ -91,6 +104,7 @@ namespace PolyChat.Models
|
|||||||
ChatMessage pet = JsonNet.Deserialize<ChatMessage>(BitConverter.ToString(Data[0].ToObject<byte[]>()));
|
ChatMessage pet = JsonNet.Deserialize<ChatMessage>(BitConverter.ToString(Data[0].ToObject<byte[]>()));
|
||||||
//TODO: send message to GUI
|
//TODO: send message to GUI
|
||||||
});
|
});
|
||||||
|
|
||||||
connection.On(SendCode.Command.ToString(), (Data) =>
|
connection.On(SendCode.Command.ToString(), (Data) =>
|
||||||
{
|
{
|
||||||
Console.WriteLine("Command recieved!" + Data[0]);
|
Console.WriteLine("Command recieved!" + Data[0]);
|
||||||
|
|||||||
16
PolyChat/Models/Exceptions/MessageTimedOutException.cs
Normal file
16
PolyChat/Models/Exceptions/MessageTimedOutException.cs
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace PolyChat.Models.Exceptions
|
||||||
|
{
|
||||||
|
public class MessageTimedOutException : Exception
|
||||||
|
{
|
||||||
|
public MessageTimedOutException(int seconds) : base(String.Format("After {0} seconds of trying to send the message it has timed out", seconds))
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -3,6 +3,7 @@ using System.Collections.Generic;
|
|||||||
using SocketIOSharp.Client;
|
using SocketIOSharp.Client;
|
||||||
using EngineIOSharp.Common.Enum;
|
using EngineIOSharp.Common.Enum;
|
||||||
using System.Net;
|
using System.Net;
|
||||||
|
using PolyChat.Models.Exceptions;
|
||||||
|
|
||||||
namespace PolyChat.Models
|
namespace PolyChat.Models
|
||||||
{
|
{
|
||||||
@@ -20,7 +21,7 @@ namespace PolyChat.Models
|
|||||||
}
|
}
|
||||||
|
|
||||||
//EXTERNAL METHODS
|
//EXTERNAL METHODS
|
||||||
//=================================================================================
|
//=========================================================================================================================================================================================
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// connects self to server with given ip
|
/// connects self to server with given ip
|
||||||
@@ -43,6 +44,26 @@ namespace PolyChat.Models
|
|||||||
this.getClient(ip).sendMessage(SendCode.Message, msg);
|
this.getClient(ip).sendMessage(SendCode.Message, msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// returns own ip adress
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
public IPAddress getIP()
|
||||||
|
{
|
||||||
|
IPHostEntry ipEntry = Dns.GetHostEntry(Dns.GetHostName());
|
||||||
|
IPAddress[] addrList = ipEntry.AddressList;
|
||||||
|
|
||||||
|
for (short i = 0; i < addrList.Length; i++)
|
||||||
|
{
|
||||||
|
if (addrList[i].ToString().Substring(0, 3).Equals("10."))
|
||||||
|
{
|
||||||
|
return addrList[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// changes name of self and sends new name to all chats
|
/// changes name of self and sends new name to all chats
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -55,10 +76,11 @@ namespace PolyChat.Models
|
|||||||
cl.sendNameChange(SendCode.NameChange, newName);
|
cl.sendNameChange(SendCode.NameChange, newName);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
//=================================================================================
|
//=========================================================================================================================================================================================
|
||||||
//INTERNAL METHODS
|
//INTERNAL METHODS
|
||||||
//=================================================================================
|
//=========================================================================================================================================================================================
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// returns client that fits to ip adress
|
/// returns client that fits to ip adress
|
||||||
@@ -76,28 +98,5 @@ namespace PolyChat.Models
|
|||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private IPAddress getIP()
|
|
||||||
{
|
|
||||||
IPHostEntry ipEntry = Dns.GetHostEntry(Dns.GetHostName());
|
|
||||||
IPAddress[] addrList = ipEntry.AddressList;
|
|
||||||
|
|
||||||
for (short i = 0; i < addrList.Length; i++)
|
|
||||||
{
|
|
||||||
if (addrList[i].ToString().Substring(0, 3).Equals("10."))
|
|
||||||
{
|
|
||||||
return addrList[i];
|
|
||||||
//get ip as byte array
|
|
||||||
/*
|
|
||||||
byte[] ba = System.Text.Encoding.ASCII.GetBytes(addrList[i].ToString());
|
|
||||||
foreach (var item in ba)
|
|
||||||
{
|
|
||||||
Console.Write(item.ToString() + ",");
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -124,6 +124,7 @@
|
|||||||
</Compile>
|
</Compile>
|
||||||
<Compile Include="Models\ChatMessage.cs" />
|
<Compile Include="Models\ChatMessage.cs" />
|
||||||
<Compile Include="Models\ChatPartner.cs" />
|
<Compile Include="Models\ChatPartner.cs" />
|
||||||
|
<Compile Include="Models\Exceptions\MessageTimedOutException.cs" />
|
||||||
<Compile Include="Models\NetworkingController.cs" />
|
<Compile Include="Models\NetworkingController.cs" />
|
||||||
<Compile Include="Models\Client.cs" />
|
<Compile Include="Models\Client.cs" />
|
||||||
<Compile Include="Models\ClientHandler.cs" />
|
<Compile Include="Models\ClientHandler.cs" />
|
||||||
|
|||||||
Reference in New Issue
Block a user