2
0
mirror of https://github.com/esiur/esiur-dotnet.git synced 2025-06-27 13:33:13 +00:00
This commit is contained in:
2019-11-10 12:41:31 +03:00
parent 8d06fd05ad
commit 5e87ea5247
41 changed files with 2076 additions and 431 deletions

View File

@ -65,18 +65,24 @@ namespace Esiur.Net.TCP
}
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, timeout, clock);
}
else if (trigger == ResourceTrigger.Terminate)
{
@ -87,6 +93,10 @@ namespace Esiur.Net.TCP
Trigger(ResourceTrigger.Terminate);
Trigger(ResourceTrigger.Initialize);
}
else if (trigger == ResourceTrigger.SystemInitialized)
{
Instance.Children<TCPFilter>().Then(x => filters = x);
}
return new AsyncReply<bool>(true);
}
@ -97,14 +107,10 @@ namespace Esiur.Net.TCP
{
var msg = data.Read();
foreach (var resource in Instance.Children)
{
if (resource is TCPFilter)
{
var f = resource as TCPFilter;
if (f.Execute(msg, data, sender))
foreach (var filter in filters)
{
if (filter.Execute(msg, data, sender))
return;
}
}
}
@ -115,25 +121,17 @@ namespace Esiur.Net.TCP
protected override void ClientConnected(TCPConnection sender)
{
foreach (var resource in Instance.Children)
foreach (var filter in filters)
{
if (resource is TCPFilter)
{
var f = resource as TCPFilter;
f.Connected(sender);
}
filter.Connected(sender);
}
}
protected override void ClientDisconnected(TCPConnection sender)
{
foreach (var resource in Instance.Children)
foreach (var filter in filters)
{
if (resource is TCPFilter)
{
var f = resource as TCPFilter;
f.Disconnected(sender);
}
filter.Disconnected(sender);
}
}