2
0
mirror of https://github.com/esiur/esiur-dotnet.git synced 2025-09-13 12:43:17 +00:00
This commit is contained in:
2025-08-23 18:16:19 +03:00
parent c4b4a2e4cb
commit 0d4ea04ef4
21 changed files with 306 additions and 305 deletions

View File

@@ -666,7 +666,7 @@ public partial class DistributedConnection : NetworkConnection, IStore
var dataType = authPacket.DataType.Value;
var (_, parsed) = Codec.ParseSync(data, dataType.Offset, dataType);
var (_, parsed) = Codec.ParseSync(data, dataType.Offset, Instance.Warehouse, dataType);
var rt = (Map<byte, object>)parsed;
@@ -793,7 +793,7 @@ public partial class DistributedConnection : NetworkConnection, IStore
else if (authPacket.Event == IIPAuthPacketEvent.IAuthPlain)
{
var dataType = authPacket.DataType.Value;
var (_, parsed) = Codec.ParseSync(data, dataType.Offset, dataType);
var (_, parsed) = Codec.ParseSync(data, dataType.Offset, Instance.Warehouse, dataType);
var rt = (Map<byte, object>)parsed;
var headers = rt.Select(x => new KeyValuePair<IIPAuthPacketIAuthHeader, object>((IIPAuthPacketIAuthHeader)x.Key, x.Value));
@@ -833,7 +833,7 @@ public partial class DistributedConnection : NetworkConnection, IStore
else if (authPacket.Event == IIPAuthPacketEvent.IAuthHashed)
{
var dataType = authPacket.DataType.Value;
var (_, parsed) = Codec.ParseSync(data, dataType.Offset, dataType);
var (_, parsed) = Codec.ParseSync(data, dataType.Offset, Instance.Warehouse, dataType);
var rt = (Map<byte, object>)parsed;
@@ -896,7 +896,7 @@ public partial class DistributedConnection : NetworkConnection, IStore
var dataType = authPacket.DataType.Value;
var (_, parsed) = Codec.ParseSync(data, dataType.Offset, dataType);
var (_, parsed) = Codec.ParseSync(data, dataType.Offset, Instance.Warehouse, dataType);
var rt = (Map<byte, object>)parsed;
@@ -1154,7 +1154,7 @@ public partial class DistributedConnection : NetworkConnection, IStore
var reference = authPacket.Reference;
var dataType = authPacket.DataType.Value;
var (_, value) = Codec.ParseSync(data, dataType.Offset, dataType);
var (_, value) = Codec.ParseSync(data, dataType.Offset, Instance.Warehouse, dataType);
Server.Membership.AuthorizePlain(session, reference, value)
.Then(x => ProcessAuthorization(x));
@@ -1698,7 +1698,7 @@ public partial class DistributedConnection : NetworkConnection, IStore
}
public AsyncBag<T> Parent<T>(IResource resource, string name) where T : IResource
public AsyncBag<T> Parents<T>(IResource resource, string name) where T : IResource
{
throw new NotImplementedException();
}
@@ -1723,8 +1723,5 @@ public partial class DistributedConnection : NetworkConnection, IStore
throw new NotImplementedException();
}
AsyncReply<T> IStore.Parent<T>(IResource resource, string name)
{
throw new NotImplementedException();
}
}

View File

@@ -252,6 +252,11 @@ partial class DistributedConnection
SendReply(IIPPacketReply.Progress, callbackId, value, max);
}
internal void SendWarning(uint callbackId, byte level, string message)
{
SendReply(IIPPacketReply.Warning, callbackId, level, message);
}
internal void SendChunk(uint callbackId, object chunk)
{
SendReply(IIPPacketReply.Chunk, callbackId, chunk);
@@ -320,7 +325,7 @@ partial class DistributedConnection
return;
}
var args = DataDeserializer.ListParser(data, dataType.Offset, (uint)dataType.ContentLength)
var args = DataDeserializer.ListParser(data, dataType.Offset, (uint)dataType.ContentLength, Instance.Warehouse)
as object[];
var errorCode = (ushort)args[0];
@@ -339,7 +344,7 @@ partial class DistributedConnection
return;
}
var args = DataDeserializer.ListParser(data, dataType.Offset, (uint)dataType.ContentLength)
var args = DataDeserializer.ListParser(data, dataType.Offset, (uint)dataType.ContentLength, Instance.Warehouse)
as object[];
var current = (uint)args[0];
@@ -358,7 +363,7 @@ partial class DistributedConnection
return;
}
var args = DataDeserializer.ListParser(data, dataType.Offset, (uint)dataType.ContentLength)
var args = DataDeserializer.ListParser(data, dataType.Offset, (uint)dataType.ContentLength, Instance.Warehouse)
as object[];
var level = (byte)args[0];
@@ -395,7 +400,7 @@ partial class DistributedConnection
void IIPNotificationResourceDestroyed(TransmissionType dataType, byte[] data)
{
var (size, rt) = Codec.ParseSync(data, dataType.Offset, dataType);
var (size, rt) = Codec.ParseSync(data, dataType.Offset, Instance.Warehouse, dataType);
var resourceId = (uint)rt;
@@ -428,7 +433,7 @@ partial class DistributedConnection
{
// resourceId, index, value
var (valueOffset, valueSize, args) =
DataDeserializer.LimitedCountListParser(data, dataType.Offset, dataType.ContentLength, 2);
DataDeserializer.LimitedCountListParser(data, dataType.Offset, dataType.ContentLength, Instance.Warehouse, 2);
var rid = (uint)args[0];
var index = (byte)args[1];
@@ -468,7 +473,7 @@ partial class DistributedConnection
// resourceId, index, value
var (valueOffset, valueSize, args) =
DataDeserializer.LimitedCountListParser(data, dataType.Offset,
dataType.ContentLength, 2);
dataType.ContentLength, Instance.Warehouse, 2);
var resourceId = (uint)args[0];
var index = (byte)args[1];
@@ -515,7 +520,7 @@ partial class DistributedConnection
void IIPRequestAttachResource(uint callback, TransmissionType dataType, byte[] data)
{
var (_, value) = Codec.ParseSync(data, 0, dataType);
var (_, value) = Codec.ParseSync(data, 0, Instance.Warehouse, dataType);
var resourceId = (uint)value;
@@ -572,7 +577,7 @@ partial class DistributedConnection
// resourceId, index, value
var (valueOffset, valueSize, args) =
DataDeserializer.LimitedCountListParser(data, dataType.Offset,
dataType.ContentLength, 2);
dataType.ContentLength, Instance.Warehouse, 2);
var resourceId = (uint)args[0];
var age = (ulong)args[1];
@@ -628,7 +633,7 @@ partial class DistributedConnection
void IIPRequestDetachResource(uint callback, TransmissionType dataType, byte[] data)
{
var (_, value) = Codec.ParseSync(data, 0, dataType);
var (_, value) = Codec.ParseSync(data, 0, Instance.Warehouse, dataType);
var resourceId = (uint)value;
@@ -720,7 +725,7 @@ partial class DistributedConnection
void IIPRequestDeleteResource(uint callback, TransmissionType dataType, byte[] data)
{
var (_, value) = Codec.ParseSync(data, 0, dataType);
var (_, value) = Codec.ParseSync(data, 0, Instance.Warehouse, dataType);
var resourceId = (uint)value;
@@ -750,7 +755,7 @@ partial class DistributedConnection
{
var (offset, length, args) = DataDeserializer.LimitedCountListParser(data, dataType.Offset,
dataType.ContentLength);
dataType.ContentLength, Instance.Warehouse);
var resourceId = (uint)args[0];
var name = (string)args[1];
@@ -792,7 +797,7 @@ partial class DistributedConnection
void IIPRequestLinkTemplates(uint callback, TransmissionType dataType, byte[] data)
{
var (_, value) = Codec.ParseSync(data, 0, dataType);
var (_, value) = Codec.ParseSync(data, 0, Instance.Warehouse, dataType);
var resourceLink = (string)value;
@@ -813,7 +818,7 @@ partial class DistributedConnection
var templates = TypeTemplate.GetDependencies(r.Instance.Template, Instance.Warehouse);
// Send
SendReply(IIPPacketReply.Completed, callback, templates.Select(x=>x.Content).ToArray());
SendReply(IIPPacketReply.Completed, callback, templates.Select(x => x.Content).ToArray());
};
@@ -825,7 +830,7 @@ partial class DistributedConnection
void IIPRequestTemplateFromClassName(uint callback, TransmissionType dataType, byte[] data)
{
var (_, value) = Codec.ParseSync(data, 0, dataType);
var (_, value) = Codec.ParseSync(data, 0, Instance.Warehouse, dataType);
var className = (string)value;
@@ -845,7 +850,7 @@ partial class DistributedConnection
void IIPRequestTemplateFromClassId(uint callback, TransmissionType dataType, byte[] data)
{
var (_, value) = Codec.ParseSync(data, 0, dataType);
var (_, value) = Codec.ParseSync(data, 0, Instance.Warehouse, dataType);
var classId = new UUID((byte[])value);
@@ -867,7 +872,7 @@ partial class DistributedConnection
void IIPRequestTemplateFromResourceId(uint callback, TransmissionType dataType, byte[] data)
{
var (_, value) = Codec.ParseSync(data, 0, dataType);
var (_, value) = Codec.ParseSync(data, 0, Instance.Warehouse, dataType);
var resourceId = (uint)value;
@@ -889,7 +894,7 @@ partial class DistributedConnection
void IIPRequestGetResourceIdByLink(uint callback, TransmissionType dataType, byte[] data)
{
var (_, parsed) = Codec.ParseSync(data, 0, dataType);
var (_, parsed) = Codec.ParseSync(data, 0, Instance.Warehouse, dataType);
var resourceLink = (string)parsed;
Action<IResource> queryCallback = (r) =>
@@ -917,7 +922,7 @@ partial class DistributedConnection
void IIPRequestQueryResources(uint callback, TransmissionType dataType, byte[] data)
{
var (_, parsed) = Codec.ParseSync(data, 0, dataType);
var (_, parsed) = Codec.ParseSync(data, 0, Instance.Warehouse, dataType);
var resourceLink = (string)parsed;
@@ -976,7 +981,7 @@ partial class DistributedConnection
void IIPRequestProcedureCall(uint callback, TransmissionType dataType, byte[] data)
{
var (offset, length, args) = DataDeserializer.LimitedCountListParser(data, dataType.Offset,
dataType.ContentLength, 1);
dataType.ContentLength, Instance.Warehouse, 1);
var procedureCall = (string)args[0];
@@ -1036,7 +1041,7 @@ partial class DistributedConnection
void IIPRequestStaticCall(uint callback, TransmissionType dataType, byte[] data)
{
var (offset, length, args) = DataDeserializer.LimitedCountListParser(data, dataType.Offset,
dataType.ContentLength, 2);
dataType.ContentLength, Instance.Warehouse, 2);
var classId = new UUID((byte[])args[0]);
var index = (byte)args[1];
@@ -1113,7 +1118,7 @@ partial class DistributedConnection
void IIPRequestInvokeFunction(uint callback, TransmissionType dataType, byte[] data)
{
var (offset, length, args) = DataDeserializer.LimitedCountListParser(data, dataType.Offset,
dataType.ContentLength, 2);
dataType.ContentLength, Instance.Warehouse, 2);
var resourceId = (uint)args[0];
var index = (byte)args[1];
@@ -1370,7 +1375,7 @@ partial class DistributedConnection
{
var (offset, length, args) = DataDeserializer.LimitedCountListParser(data, dataType.Offset,
dataType.ContentLength);
dataType.ContentLength, Instance.Warehouse);
var resourceId = (uint)args[0];
var index = (byte)args[1];
@@ -1429,7 +1434,7 @@ partial class DistributedConnection
{
var (offset, length, args) = DataDeserializer.LimitedCountListParser(data, dataType.Offset,
dataType.ContentLength);
dataType.ContentLength, Instance.Warehouse);
var resourceId = (uint)args[0];
var index = (byte)args[1];
@@ -1490,7 +1495,7 @@ partial class DistributedConnection
{
var (offset, length, args) = DataDeserializer.LimitedCountListParser(data, dataType.Offset,
dataType.ContentLength, 2);
dataType.ContentLength, Instance.Warehouse, 2);
var rid = (uint)args[0];
var index = (byte)args[1];
@@ -1795,7 +1800,7 @@ partial class DistributedConnection
var age = (ulong)args[1];
var link = (string)args[2];
var hops = (byte)args[3];
var pv = (PropertyValue[])args[4];
var pvData = (byte[])args[4];
DistributedResource dr;
TypeTemplate template = null;
@@ -1817,30 +1822,12 @@ partial class DistributedConnection
var initResource = (DistributedResource ok) =>
{
var (_, parsed) = Codec.ParseAsync(content, 0, this, newSequence, transmissionType);
var parsedReply = DataDeserializer.PropertyValueArrayParserAsync(pvData, 0, (uint)pvData.Length, this, newSequence);// Codec.proper (content, 0, this, newSequence, transmissionType);
if (parsed is AsyncReply parsedReply)
parsedReply.Then(results =>
{
parsedReply.Then(results =>
{
var ar = results as object[];
var pvs = new List<PropertyValue>();
for (var i = 0; i < ar.Length; i += 3)
pvs.Add(new PropertyValue(ar[i + 2], Convert.ToUInt64(ar[i]), (DateTime)ar[i + 1]));
dr._Attach(pvs.ToArray());
resourceRequests.Remove(id);
// move from needed to attached.
neededResources.Remove(id);
attachedResources[id] = new WeakReference<DistributedResource>(dr);
reply.Trigger(dr);
}).Error(ex => reply.TriggerError(ex));
}
else
{
var ar = parsed as object[];
var ar = results as object[];
var pvs = new List<PropertyValue>();
@@ -1853,7 +1840,8 @@ partial class DistributedConnection
neededResources.Remove(id);
attachedResources[id] = new WeakReference<DistributedResource>(dr);
reply.Trigger(dr);
}
}).Error(ex => reply.TriggerError(ex));
};
@@ -2063,7 +2051,7 @@ partial class DistributedConnection
{
var (offset, length, args) = DataDeserializer.LimitedCountListParser(data, dataType.Offset,
dataType.ContentLength);
dataType.ContentLength, Instance.Warehouse);
var peerTime = (DateTime)args[0];
var interval = (uint)args[0];