Here are the examples of the csharp api System.IO.Stream.ReadVarString() taken from open source projects. By voting up you can indicate which examples are most useful and appropriate.
1 Examples
19
Source : StreamDecodingExtensions.cs
with MIT License
from yjs
with MIT License
from yjs
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static object ReadAny(this Stream stream)
{
byte type = stream._ReadByte();
switch (type)
{
case 119: // String
return stream.ReadVarString();
case 120: // boolean true
return true;
case 121: // boolean false
return false;
case 123: // Float64
#if NETSTANDARD2_0
var dBytes = new byte[8];
stream._ReadBytes(dBytes);
if (BitConverter.IsLittleEndian)
{
Array.Reverse(dBytes);
}
return BitConverter.ToDouble(dBytes, 0);
#elif NETSTANDARD2_1
Span<byte> dBytes = stackalloc byte[8];
stream._ReadBytes(dBytes);
if (BitConverter.IsLittleEndian)
{
dBytes.Reverse();
}
return BitConverter.ToDouble(dBytes);
#endif // NETSTANDARD2_0
case 124: // Float32
#if NETSTANDARD2_0
var fBytes = new byte[4];
stream._ReadBytes(fBytes);
if (BitConverter.IsLittleEndian)
{
Array.Reverse(fBytes);
}
return BitConverter.ToSingle(fBytes, 0);
#elif NETSTANDARD2_1
Span<byte> fBytes = stackalloc byte[4];
stream._ReadBytes(fBytes);
if (BitConverter.IsLittleEndian)
{
fBytes.Reverse();
}
return BitConverter.ToSingle(fBytes);
#endif // NETSTANDARD2_0
case 125: // integer
return (int)stream.ReadVarInt().Value;
case 126: // null
case 127: // undefined
return null;
case 116: // ArrayBuffer
return stream.ReadVarUint8Array();
case 117: // Array<object>
{
var len = (int)stream.ReadVarUint();
var arr = new List<object>(len);
for (int i = 0; i < len; i++)
{
arr.Add(stream.ReadAny());
}
return arr;
}
case 118: // object (Dictionary<string, object>)
{
var len = (int)stream.ReadVarUint();
var obj = new Dictionary<string, object>(len);
for (int i = 0; i < len; i++)
{
var key = stream.ReadVarString();
obj[key] = stream.ReadAny();
}
return obj;
}
default:
throw new InvalidDataException($"Unknown object type: {type}");
}
}