Rework client to be non static
This commit is contained in:
1 parent
6f910e969a
commit
b439805f3e
7 files changed
+107
-108
No files matched your search
@@ -9,23 +9,24 @@ using System.Threading.Tasks;
|
||||
namespace Mistox.Client {
|
||||
public class mTCPClient : IDisposable {
|
||||
|
||||
TcpClient Server;
|
||||
TcpClient _connection;
|
||||
MistoxClient _parent;
|
||||
|
||||
public mTCPClient( IPEndPoint ServerAddress ) {
|
||||
Server = new TcpClient( AddressFamily.InterNetwork );
|
||||
Server.NoDelay = true;
|
||||
Server.Connect( ServerAddress );
|
||||
ClientInterface.ServerClientInstance.InvokeOnServerConnected();
|
||||
public mTCPClient( MistoxClient parent, IPEndPoint ServerAddress ) {
|
||||
_connection = new TcpClient( AddressFamily.InterNetwork );
|
||||
_connection.NoDelay = true;
|
||||
_connection.Connect( ServerAddress );
|
||||
_parent.InvokeOnServerConnected();
|
||||
Thread RThread = new Thread(async () => { await ReceiveThread(); });
|
||||
RThread.Start();
|
||||
}
|
||||
|
||||
async Task ReceiveThread() {
|
||||
using( NetworkStream ns = Server.GetStream() ) {
|
||||
using( NetworkStream ns = _connection.GetStream() ) {
|
||||
try {
|
||||
byte[] headerBuffer = new byte[DataPacket.HeaderLength];
|
||||
byte[] payloadBuffer = new byte[65535]; // Upper limit for safety
|
||||
while( ClientInterface.ServerClientInstance.Alive ) {
|
||||
while( _parent.Alive ) {
|
||||
|
||||
// Read the header off
|
||||
await ns.ReadExactlyAsync(headerBuffer, 0, 3);
|
||||
@@ -46,11 +47,11 @@ namespace Mistox.Client {
|
||||
dynamic dataobject = DataPacket.Deserialize( packetbyte, dataLength, payloadBuffer.AsMemory(DataPacket.HeaderLength, dataLength) );
|
||||
|
||||
// Return the object
|
||||
ClientInterface.ServerClientInstance.InvokeOnReceived(dataobject);
|
||||
_parent.InvokeOnReceived(dataobject);
|
||||
|
||||
}
|
||||
} catch (Exception e) {
|
||||
ClientInterface.ServerClientInstance.Alive = false;
|
||||
_parent.Alive = false;
|
||||
Dispose();
|
||||
Console.WriteLine("TCP Receive exception: " + e.Message);
|
||||
}
|
||||
@@ -59,13 +60,13 @@ namespace Mistox.Client {
|
||||
|
||||
public async Task Send<T>(T packet) {
|
||||
byte[] data = DataPacket.Serialize( packet );
|
||||
await Server.GetStream().WriteAsync( data, 0, data.Length );
|
||||
await _connection.GetStream().WriteAsync( data, 0, data.Length );
|
||||
}
|
||||
|
||||
public void Dispose() {
|
||||
ClientInterface.ServerClientInstance.InvokeOnServerDisconnected();
|
||||
Server.Close();
|
||||
Server = null;
|
||||
_parent.InvokeOnServerDisconnected();
|
||||
_connection.Close();
|
||||
_connection = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user