Long request possibility added

pull/1/head
a.bozhenov 5 years ago
parent 88e932ca96
commit 4c9b2ba25e

@ -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);
}

@ -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()
{

@ -1,41 +1,30 @@
using System.Threading;
using ZeroLevel.Services.Serialization;
using ZeroLevel.Services.Serialization;
namespace ZeroLevel.Services.Network
{
public class LongRequest<T>
: IBinarySerializable
{
static long _index = 0;
public LongRequest() { }
public LongRequest<T> Create(T value, string serviceKey, string inbox) => new LongRequest<T>
public LongRequest<T> Create(T value, string inbox) => new LongRequest<T>
{
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<T>();
}
public void Serialize(IBinaryWriter writer)
{
writer.WriteLong(this.Identity);
writer.WriteString(this.Inbox);
writer.WriteString(this.ServiceKey);
writer.WriteCompatible<T>(this.Body);
}
}

Loading…
Cancel
Save

Powered by TurnKey Linux.