private (string securityToken, DateTime leaseEnd) DecodePayload(ReadOnlySpan <byte> span) { var reader = new BinarySpanReader(span); var securityToken = reader.ReadString(); var leaseEnd = new DateTime(reader.ReadInt64()); return(securityToken, leaseEnd); }
/// <summary> /// Binary deserialize /// </summary> /// <param name="reader">Reader of binary</param> public string BinaryDeserialize(ref BinarySpanReader reader) { int length = BitConverter.ToInt32(reader.Read(sizeof(int))); if (length == -1) { return(null); } return(new string(MemoryMarshal.Cast <byte, char>(reader.Read(length)))); }
/// <summary> /// Binary deserialize /// </summary> /// <param name="reader">Reader of binary</param> public byte[] BinaryDeserialize(ref BinarySpanReader reader) { var length = BitConverter.ToInt32(reader.Read(sizeof(int))); if (length == 0) { return(null); } return(reader.Read(length).ToArray()); }
private static DebugModuleProperties Decode(ReadOnlySpan <byte> memory) { var reader = new BinarySpanReader(memory, ByteOrder.LittleEndian); var endPoint = new EndPointAddress(reader.Read().ToArray()); // TODO: This copies var module = new ModuleIdentifier(reader.ReadString()); var major = reader.ReadInt32(); var minor = reader.ReadInt32(); var revision = reader.ReadInt32(); var isPreRelease = reader.ReadBool(); var version = new ModuleVersion(major, minor, revision, isPreRelease); return(new DebugModuleProperties(endPoint, module, version)); }
private EndPointAddress ReadEndPointAddress(ref BinarySpanReader reader) { var localEndPointBytesLenght = reader.ReadInt32(); if (localEndPointBytesLenght == 0) { return(EndPointAddress.UnknownAddress); } var utf8EncodedValue = reader.Read(localEndPointBytesLenght); var copy = utf8EncodedValue.ToArray(); // TODO return(new EndPointAddress(copy)); }
/// <summary> /// Binary deserialize /// </summary> /// <param name="reader">Reader of binary</param> public List <T> BinaryDeserialize(ref BinarySpanReader reader) { var length = BitConverter.ToInt32(reader.Read(sizeof(int))); if (length == 0) { return(null); } var instance = new List <T>(); for (int i = 0; i < length; i++) { instance.Add(typeGoInfo.BinaryDeserialize(ref reader)); } return(instance); }
private (EndPointAddress endPoint, IReadOnlyCollection <ReadOnlyMemory <char> > prefixes) ReadRunningModuleEntry(IEntry entry) { var reader = new BinarySpanReader(entry.Value.Span, ByteOrder.LittleEndian); var endPoint = ReadEndPointAddress(ref reader); var prefixesCount = reader.ReadInt32(); var prefixes = new List <ReadOnlyMemory <char> >(capacity: prefixesCount); for (var i = 0; i < prefixesCount; i++) { var prefix = reader.ReadString().AsMemory(); prefixes.Add(prefix); } return(endPoint, prefixes); }
/// <summary> /// Binary deserialize /// </summary> /// <param name="reader">Reader of binary</param> public T[] BinaryDeserialize(ref BinarySpanReader reader) { int length = BitConverter.ToInt32(reader.Read(sizeof(int))); if (length == -1) { return(null); } else if (length == 0) { return(new T[0]); } T[] instance = new T[length]; for (int i = 0; i < length; i++) { instance[i] = typeGoInfo.BinaryDeserialize(ref reader); } return(instance); }
/// <summary> /// Binary deserialize /// </summary> /// <param name="reader">Reader of binary</param> /// <param name="value"></param> internal abstract void BinaryDeserialize(ref BinarySpanReader reader, ref TObject value);
private EndPointAddress ReadModulePrefixEntry(IEntry entry) { var reader = new BinarySpanReader(entry.Value.Span, ByteOrder.LittleEndian); return(ReadEndPointAddress(ref reader)); }
/// <summary> /// Binary deserialize /// </summary> /// <param name="reader">Reader of binary</param> public TObject BinaryDeserialize(ref BinarySpanReader reader) { if (reader.Read(1)[0] == 0) { return(default);
internal override void BinaryDeserialize(ref BinarySpanReader reader, ref TObject value) { SetValue(value, TypeGoInfo.BinaryDeserialize(ref reader)); }