Rework client to be non static

This commit is contained in:
derek.holloway committed 2026-07-08 13:45:20 -07:00
1 parent 6f910e969a
commit b439805f3e
7 files changed
+107 -108

No files matched your search

+15 -14
View File
@@ -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;
}
}
}