mirror of
https://github.com/esiur/esiur-dotnet.git
synced 2025-09-13 12:43:17 +00:00
Working
This commit is contained in:
@@ -60,30 +60,31 @@ public static class Codec
|
||||
DataDeserializer.ResourceParser8Async,
|
||||
},
|
||||
new AsyncParser[]{
|
||||
DataDeserializer.Int16ParserAsync,
|
||||
DataDeserializer.UInt16ParserAsync,
|
||||
DataDeserializer.Int16ParserAsync,
|
||||
DataDeserializer.Char16ParserAsync,
|
||||
DataDeserializer.LocalResourceParser16Async,
|
||||
DataDeserializer.ResourceParser16Async,
|
||||
},
|
||||
new AsyncParser[]{
|
||||
DataDeserializer.Int32ParserAsync,
|
||||
new AsyncParser[]{
|
||||
DataDeserializer.UInt32ParserAsync,
|
||||
DataDeserializer.Int32ParserAsync,
|
||||
DataDeserializer.Float32ParserAsync,
|
||||
DataDeserializer.LocalResourceParser32Async,
|
||||
DataDeserializer.ResourceParser32Async,
|
||||
},
|
||||
new AsyncParser[]{
|
||||
DataDeserializer.Int64ParserAsync,
|
||||
DataDeserializer.UInt64ParserAsync,
|
||||
DataDeserializer.Int64ParserAsync,
|
||||
DataDeserializer.Float64ParserAsync,
|
||||
DataDeserializer.DateTimeParserAsync,
|
||||
},
|
||||
new AsyncParser[]
|
||||
{
|
||||
DataDeserializer.Int128ParserAsync, // int 128
|
||||
{
|
||||
DataDeserializer.UInt128ParserAsync, // uint 128
|
||||
DataDeserializer.Float128ParserAsync,
|
||||
DataDeserializer.Int128ParserAsync, // int 128
|
||||
DataDeserializer.Decimal128ParserAsync,
|
||||
DataDeserializer.UUIDParserAsync
|
||||
}
|
||||
};
|
||||
|
||||
@@ -146,7 +147,8 @@ public static class Codec
|
||||
{
|
||||
DataDeserializer.UInt128Parser, // uint 128
|
||||
DataDeserializer.Int128Parser, // int 128
|
||||
DataDeserializer.Float128Parser,
|
||||
DataDeserializer.Decimal128Parser,
|
||||
DataDeserializer.UUIDParser
|
||||
}
|
||||
};
|
||||
|
||||
@@ -197,11 +199,11 @@ public static class Codec
|
||||
|
||||
var tt = dataType.Value;
|
||||
|
||||
Console.WriteLine("Parsing " + tt.Class + " " + tt.Identifier);
|
||||
//Console.WriteLine("Parsing " + tt.Class + " " + tt.Identifier);
|
||||
|
||||
if (tt.Class == TransmissionTypeClass.Fixed)
|
||||
{
|
||||
return (len, FixedAsyncParsers[tt.Exponent][tt.Index](data, dataType.Value.Offset, (uint)tt.ContentLength, connection, requestSequence));
|
||||
return (len, FixedAsyncParsers[tt.Exponent][tt.Index](data, dataType.Value.Offset, (uint)tt.ContentLength, connection, requestSequence));
|
||||
}
|
||||
else if (tt.Class == TransmissionTypeClass.Dynamic)
|
||||
{
|
||||
@@ -302,7 +304,7 @@ public static class Codec
|
||||
[typeof(List<byte>)] = DataSerializer.RawDataComposerFromList,
|
||||
//[typeof(List<byte?>)] = DataSerializer.RawDataComposerFromList,
|
||||
[typeof(string)] = DataSerializer.StringComposer,
|
||||
|
||||
[typeof(UUID)] = DataSerializer.UUIDComposer,
|
||||
// Special
|
||||
[typeof(object[])] = DataSerializer.ListComposer,
|
||||
[typeof(List<object>)] = DataSerializer.ListComposer,
|
||||
|
@@ -169,18 +169,29 @@ public static class DataDeserializer
|
||||
}
|
||||
|
||||
|
||||
public static unsafe object Float128ParserAsync(byte[] data, uint offset, uint length, DistributedConnection connection, uint[] requestSequence)
|
||||
public static unsafe object Decimal128ParserAsync(byte[] data, uint offset, uint length, DistributedConnection connection, uint[] requestSequence)
|
||||
{
|
||||
fixed (byte* ptr = &data[offset])
|
||||
return *(decimal*)ptr;
|
||||
}
|
||||
|
||||
public static unsafe object Float128Parser(byte[] data, uint offset, uint length, Warehouse warehouse)
|
||||
public static unsafe object Decimal128Parser(byte[] data, uint offset, uint length, Warehouse warehouse)
|
||||
{
|
||||
fixed (byte* ptr = &data[offset])
|
||||
return *(decimal*)ptr;
|
||||
}
|
||||
|
||||
public static unsafe object UUIDParserAsync(byte[] data, uint offset, uint length, DistributedConnection connection, uint[] requestSequence)
|
||||
{
|
||||
return new UUID(data, offset);
|
||||
}
|
||||
|
||||
public static unsafe object UUIDParser(byte[] data, uint offset, uint length, Warehouse warehouse)
|
||||
{
|
||||
return new UUID(data, offset);
|
||||
}
|
||||
|
||||
|
||||
|
||||
public static unsafe object Int128ParserAsync(byte[] data, uint offset, uint length, DistributedConnection connection, uint[] requestSequence)
|
||||
{
|
||||
@@ -962,6 +973,8 @@ public static class DataDeserializer
|
||||
{
|
||||
var (cs, reply) = Codec.ParseAsync(data, offset, connection, requestSequence);
|
||||
|
||||
|
||||
|
||||
rt.Add(reply);
|
||||
|
||||
if (cs > 0)
|
||||
|
@@ -114,8 +114,6 @@ public static class DataSerializer
|
||||
|
||||
public static (TransmissionTypeIdentifier, byte[]) EnumComposer(object value, DistributedConnection connection)
|
||||
{
|
||||
Console.WriteLine(value.GetType().Name);
|
||||
|
||||
if (value == null)
|
||||
return (TransmissionTypeIdentifier.Null, new byte[0]);
|
||||
|
||||
@@ -391,6 +389,12 @@ public static class DataSerializer
|
||||
return (TransmissionTypeIdentifier.Map, rt.ToArray());
|
||||
}
|
||||
|
||||
public static unsafe (TransmissionTypeIdentifier, byte[]) UUIDComposer(object value, DistributedConnection connection)
|
||||
{
|
||||
return (TransmissionTypeIdentifier.UUID, ((UUID)value).Data);
|
||||
|
||||
}
|
||||
|
||||
public static unsafe (TransmissionTypeIdentifier, byte[]) RecordComposer(object value, DistributedConnection connection)
|
||||
{
|
||||
var rt = new List<byte>();// BinaryList();
|
||||
|
@@ -39,6 +39,7 @@ public enum TransmissionTypeIdentifier : byte
|
||||
UInt128 = 0x28,
|
||||
Int128 = 0x29,
|
||||
Decimal128 = 0x2A,
|
||||
UUID = 0x2B,
|
||||
|
||||
RawData = 0x40,
|
||||
String = 0x41,
|
||||
|
Reference in New Issue
Block a user