mirror of
				https://github.com/esiur/esiur-dotnet.git
				synced 2025-10-30 23:51:34 +00:00 
			
		
		
		
	WeakRef
This commit is contained in:
		| @@ -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); | ||||
|             } | ||||
|         } | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user