diff --git a/ZeroLevel/Services/Network/Contracts/IExchange.cs b/ZeroLevel/Services/Network/Contracts/IExchange.cs index 510321c..375f542 100644 --- a/ZeroLevel/Services/Network/Contracts/IExchange.cs +++ b/ZeroLevel/Services/Network/Contracts/IExchange.cs @@ -17,6 +17,7 @@ namespace ZeroLevel.Network IServiceRoutesStorage RoutesStorage { get; } IServiceRoutesStorage DiscoveryStorage { get; } + IClient GetConnection(ISocketClient client); IClient GetConnection(string alias); IClient GetConnection(IPEndPoint endpoint); } diff --git a/ZeroLevel/Services/Network/Exchange.cs b/ZeroLevel/Services/Network/Exchange.cs index aa9bb96..8c4abc5 100644 --- a/ZeroLevel/Services/Network/Exchange.cs +++ b/ZeroLevel/Services/Network/Exchange.cs @@ -635,6 +635,19 @@ namespace ZeroLevel.Network return null; } + public IClient GetConnection(ISocketClient client) + { + try + { + return new ExClient(client); + } + catch (Exception ex) + { + Log.SystemError(ex, "[Exchange.GetConnection]"); + } + return null; + } + #region Host service public IRouter UseHost() { diff --git a/ZeroLevel/Services/Network/LongRequest.cs b/ZeroLevel/Services/Network/LongRequest.cs index da6cf05..cc4d30d 100644 --- a/ZeroLevel/Services/Network/LongRequest.cs +++ b/ZeroLevel/Services/Network/LongRequest.cs @@ -1,41 +1,30 @@ -using System.Threading; -using ZeroLevel.Services.Serialization; +using ZeroLevel.Services.Serialization; namespace ZeroLevel.Services.Network { public class LongRequest : IBinarySerializable { - static long _index = 0; - public LongRequest() { } - public LongRequest Create(T value, string serviceKey, string inbox) => new LongRequest + public LongRequest Create(T value, string inbox) => new LongRequest { - Identity = Interlocked.Increment(ref _index), Body = value, - ServiceKey = serviceKey, Inbox = inbox }; - public long Identity { get; set; } public T Body { get; set; } - public string ServiceKey { get; set; } public string Inbox { get; set; } public void Deserialize(IBinaryReader reader) { - this.Identity = reader.ReadLong(); this.Inbox = reader.ReadString(); - this.ServiceKey = reader.ReadString(); this.Body = reader.ReadCompatible(); } public void Serialize(IBinaryWriter writer) { - writer.WriteLong(this.Identity); writer.WriteString(this.Inbox); - writer.WriteString(this.ServiceKey); writer.WriteCompatible(this.Body); } }