mirror of
https://github.com/esiur/esiur-dotnet.git
synced 2025-06-27 05:23:13 +00:00
.Net 6 Upgrade
This commit is contained in:
@ -32,35 +32,34 @@ using System.Collections;
|
||||
using Esiur.Misc;
|
||||
using Esiur.Data;
|
||||
|
||||
namespace Esiur.Net.TCP
|
||||
namespace Esiur.Net.TCP;
|
||||
public class TCPConnection : NetworkConnection
|
||||
{
|
||||
public class TCPConnection:NetworkConnection {
|
||||
|
||||
private KeyList<string, object> variables = new KeyList<string, object>();
|
||||
private KeyList<string, object> variables = new KeyList<string, object>();
|
||||
|
||||
public TCPServer Server { get; internal set; }
|
||||
public TCPServer Server { get; internal set; }
|
||||
|
||||
public KeyList<string, object> Variables
|
||||
public KeyList<string, object> Variables
|
||||
{
|
||||
get
|
||||
{
|
||||
get
|
||||
{
|
||||
return variables;
|
||||
}
|
||||
}
|
||||
|
||||
protected override void Connected()
|
||||
{
|
||||
// do nothing
|
||||
}
|
||||
|
||||
protected override void DataReceived(NetworkBuffer buffer)
|
||||
{
|
||||
Server?.Execute(this, buffer);
|
||||
}
|
||||
|
||||
protected override void Disconencted()
|
||||
{
|
||||
// do nothing
|
||||
return variables;
|
||||
}
|
||||
}
|
||||
|
||||
protected override void Connected()
|
||||
{
|
||||
// do nothing
|
||||
}
|
||||
|
||||
protected override void DataReceived(NetworkBuffer buffer)
|
||||
{
|
||||
Server?.Execute(this, buffer);
|
||||
}
|
||||
|
||||
protected override void Disconencted()
|
||||
{
|
||||
// do nothing
|
||||
}
|
||||
}
|
||||
|
@ -32,35 +32,34 @@ using Esiur.Net.Sockets;
|
||||
using Esiur.Core;
|
||||
using Esiur.Resource;
|
||||
|
||||
namespace Esiur.Net.TCP
|
||||
namespace Esiur.Net.TCP;
|
||||
|
||||
public abstract class TCPFilter : IResource
|
||||
{
|
||||
public abstract class TCPFilter: IResource
|
||||
public Instance Instance
|
||||
{
|
||||
public Instance Instance
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
get;
|
||||
set;
|
||||
}
|
||||
|
||||
public event DestroyedEvent OnDestroy;
|
||||
public event DestroyedEvent OnDestroy;
|
||||
|
||||
public abstract AsyncReply<bool> Trigger(ResourceTrigger trigger);
|
||||
public abstract AsyncReply<bool> Trigger(ResourceTrigger trigger);
|
||||
|
||||
public virtual bool Connected(TCPConnection sender)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
public virtual bool Connected(TCPConnection sender)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
public virtual bool Disconnected(TCPConnection sender)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
public virtual bool Disconnected(TCPConnection sender)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
public abstract bool Execute(byte[] msg, NetworkBuffer data, TCPConnection sender);
|
||||
public abstract bool Execute(byte[] msg, NetworkBuffer data, TCPConnection sender);
|
||||
|
||||
public void Destroy()
|
||||
{
|
||||
OnDestroy?.Invoke(this);
|
||||
}
|
||||
public void Destroy()
|
||||
{
|
||||
OnDestroy?.Invoke(this);
|
||||
}
|
||||
}
|
||||
|
@ -34,123 +34,121 @@ using Esiur.Core;
|
||||
using System.Net;
|
||||
using Esiur.Resource;
|
||||
|
||||
namespace Esiur.Net.TCP
|
||||
namespace Esiur.Net.TCP;
|
||||
public class TCPServer : NetworkServer<TCPConnection>, IResource
|
||||
{
|
||||
public class TCPServer : NetworkServer<TCPConnection>, IResource
|
||||
|
||||
[Attribute]
|
||||
public string IP
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
[Attribute]
|
||||
public ushort Port
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
//[Storable]
|
||||
//public uint Timeout
|
||||
//{
|
||||
// get;
|
||||
// set;
|
||||
//}
|
||||
//[Attribute]
|
||||
//public uint Clock
|
||||
//{
|
||||
// get;
|
||||
// set;
|
||||
//}
|
||||
public Instance Instance { get; set; }
|
||||
|
||||
TCPFilter[] filters = null;
|
||||
|
||||
|
||||
public AsyncReply<bool> Trigger(ResourceTrigger trigger)
|
||||
{
|
||||
if (trigger == ResourceTrigger.Initialize)
|
||||
{
|
||||
TCPSocket listener;
|
||||
|
||||
|
||||
if (IP != null)
|
||||
listener = new TCPSocket(new IPEndPoint(IPAddress.Parse(IP), Port));
|
||||
else
|
||||
listener = new TCPSocket(new IPEndPoint(IPAddress.Any, Port));
|
||||
|
||||
Start(listener);
|
||||
|
||||
|
||||
}
|
||||
else if (trigger == ResourceTrigger.Terminate)
|
||||
{
|
||||
Stop();
|
||||
}
|
||||
else if (trigger == ResourceTrigger.SystemReload)
|
||||
{
|
||||
Trigger(ResourceTrigger.Terminate);
|
||||
Trigger(ResourceTrigger.Initialize);
|
||||
}
|
||||
else if (trigger == ResourceTrigger.SystemInitialized)
|
||||
{
|
||||
Instance.Children<TCPFilter>().Then(x => filters = x);
|
||||
}
|
||||
|
||||
return new AsyncReply<bool>(true);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
internal bool Execute(TCPConnection sender, NetworkBuffer data)
|
||||
{
|
||||
var msg = data.Read();
|
||||
|
||||
foreach (var filter in filters)
|
||||
{
|
||||
if (filter.Execute(msg, data, sender))
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
private void SessionModified(TCPConnection session, string key, object newValue)
|
||||
{
|
||||
|
||||
[Attribute]
|
||||
public string IP
|
||||
}
|
||||
|
||||
protected override void ClientDisconnected(TCPConnection connection)
|
||||
{
|
||||
|
||||
foreach (var filter in filters)
|
||||
{
|
||||
get;
|
||||
set;
|
||||
filter.Disconnected(connection);
|
||||
}
|
||||
[Attribute]
|
||||
public ushort Port
|
||||
}
|
||||
|
||||
public override void Add(TCPConnection connection)
|
||||
{
|
||||
connection.Server = this;
|
||||
base.Add(connection);
|
||||
}
|
||||
|
||||
public override void Remove(TCPConnection connection)
|
||||
{
|
||||
connection.Server = null;
|
||||
base.Remove(connection);
|
||||
}
|
||||
|
||||
protected override void ClientConnected(TCPConnection connection)
|
||||
{
|
||||
foreach (var filter in filters)
|
||||
{
|
||||
get;
|
||||
set;
|
||||
filter.Connected(connection);
|
||||
}
|
||||
//[Storable]
|
||||
//public uint Timeout
|
||||
//{
|
||||
// get;
|
||||
// set;
|
||||
//}
|
||||
//[Attribute]
|
||||
//public uint Clock
|
||||
//{
|
||||
// get;
|
||||
// set;
|
||||
//}
|
||||
public Instance Instance { get; set; }
|
||||
}
|
||||
|
||||
TCPFilter[] filters = null;
|
||||
|
||||
|
||||
public AsyncReply<bool> Trigger(ResourceTrigger trigger)
|
||||
{
|
||||
if (trigger == ResourceTrigger.Initialize)
|
||||
{
|
||||
TCPSocket listener;
|
||||
|
||||
|
||||
if (IP != null)
|
||||
listener = new TCPSocket(new IPEndPoint(IPAddress.Parse(IP), Port));
|
||||
else
|
||||
listener = new TCPSocket(new IPEndPoint(IPAddress.Any, Port));
|
||||
|
||||
Start(listener);
|
||||
|
||||
|
||||
}
|
||||
else if (trigger == ResourceTrigger.Terminate)
|
||||
{
|
||||
Stop();
|
||||
}
|
||||
else if (trigger == ResourceTrigger.SystemReload)
|
||||
{
|
||||
Trigger(ResourceTrigger.Terminate);
|
||||
Trigger(ResourceTrigger.Initialize);
|
||||
}
|
||||
else if (trigger == ResourceTrigger.SystemInitialized)
|
||||
{
|
||||
Instance.Children<TCPFilter>().Then(x => filters = x);
|
||||
}
|
||||
|
||||
return new AsyncReply<bool>(true);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
internal bool Execute(TCPConnection sender, NetworkBuffer data)
|
||||
{
|
||||
var msg = data.Read();
|
||||
|
||||
foreach (var filter in filters)
|
||||
{
|
||||
if (filter.Execute(msg, data, sender))
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
private void SessionModified(TCPConnection session, string key, object newValue)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
protected override void ClientDisconnected(TCPConnection connection)
|
||||
{
|
||||
|
||||
foreach (var filter in filters)
|
||||
{
|
||||
filter.Disconnected(connection);
|
||||
}
|
||||
}
|
||||
|
||||
public override void Add(TCPConnection connection)
|
||||
{
|
||||
connection.Server = this;
|
||||
base.Add(connection);
|
||||
}
|
||||
|
||||
public override void Remove(TCPConnection connection)
|
||||
{
|
||||
connection.Server = null;
|
||||
base.Remove(connection);
|
||||
}
|
||||
|
||||
protected override void ClientConnected(TCPConnection connection)
|
||||
{
|
||||
foreach (var filter in filters)
|
||||
{
|
||||
filter.Connected(connection);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -28,10 +28,8 @@ using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Esiur.Net.TCP
|
||||
namespace Esiur.Net.TCP;
|
||||
public class TCPSession : NetworkSession
|
||||
{
|
||||
public class TCPSession : NetworkSession
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user