public override async Task <object> ReadValueAsync(Stream stream, GraphBinaryReader reader, bool nullable) { if (nullable) { var valueFlag = await stream.ReadByteAsync().ConfigureAwait(false); if ((valueFlag & 1) == 1) { return(null); } } // Read the byte length of the value bytes var valueLength = await stream.ReadIntAsync().ConfigureAwait(false); if (valueLength <= 0) { throw new IOException($"Unexpected value length: {valueLength}"); } if (valueLength > stream.Length) { throw new IOException($"Not enough readable bytes: {valueLength} (expected: {stream.Length})"); } var name = (string)await reader.ReadValueAsync <string>(stream, false).ConfigureAwait(false); var birthDate = (DateTimeOffset)await reader.ReadValueAsync <DateTimeOffset>(stream, false).ConfigureAwait(false); return(new SamplePerson(name, birthDate)); }
/// <inheritdoc /> protected override async Task <P> ReadValueAsync(Stream stream, GraphBinaryReader reader) { var operatorName = (string)await reader.ReadValueAsync <string>(stream, false).ConfigureAwait(false); var argsLength = (int)await reader.ReadValueAsync <int>(stream, false).ConfigureAwait(false); var args = new object[argsLength]; for (var i = 0; i < argsLength; i++) { args[i] = await reader.ReadAsync(stream).ConfigureAwait(false); } if (operatorName == "and" || operatorName == "or") { return(new P(operatorName, (P)args[0], (P)args[1])); } if (operatorName == "not") { return(new P(operatorName, (P)args[0])); } if (argsLength == 1) { if (DataType == DataType.TextP) { return(new TextP(operatorName, (string)args[0])); } return(new P(operatorName, args[0])); } return(new P(operatorName, args)); }
/// <inheritdoc /> protected override async Task <decimal> ReadValueAsync(Stream stream, GraphBinaryReader reader) { var scale = (int)await reader.ReadValueAsync <int>(stream, false).ConfigureAwait(false); var unscaled = (BigInteger)await reader.ReadValueAsync <BigInteger>(stream, false).ConfigureAwait(false); return(ConvertScaleAndUnscaledValue(scale, unscaled)); }
/// <inheritdoc /> protected override async Task <ILambda> ReadValueAsync(Stream stream, GraphBinaryReader reader) { var language = (string)await reader.ReadValueAsync <string>(stream, false).ConfigureAwait(false); var expression = (string)await reader.ReadValueAsync <string>(stream, false).ConfigureAwait(false); // discard the arguments await reader.ReadValueAsync <int>(stream, false).ConfigureAwait(false); return(new StringBasedLambda(expression, language)); }
protected override async Task <JanusGraphP> ReadNonNullableValueAsync(Stream stream, GraphBinaryReader reader) { var operatorName = (string)await reader.ReadValueAsync <string>(stream, false).ConfigureAwait(false); var value = await reader.ReadAsync(stream).ConfigureAwait(false); return(new JanusGraphP(operatorName, value)); }
/// <inheritdoc /> protected override async Task <Traverser> ReadValueAsync(Stream stream, GraphBinaryReader reader) { var bulk = (long)await reader.ReadValueAsync <long>(stream, false).ConfigureAwait(false); var v = await reader.ReadAsync(stream).ConfigureAwait(false); return(new Traverser(v, bulk)); }
/// <inheritdoc /> protected override async Task <Binding> ReadValueAsync(Stream stream, GraphBinaryReader reader) { var key = (string)await reader.ReadValueAsync <string>(stream, false).ConfigureAwait(false); var value = await reader.ReadAsync(stream).ConfigureAwait(false); return(new Binding(key, value)); }
/// <inheritdoc /> protected override async Task <BigInteger> ReadValueAsync(Stream stream, GraphBinaryReader reader) { var length = (int)await reader.ReadValueAsync <int>(stream, false).ConfigureAwait(false); var bytes = await stream.ReadAsync(length).ConfigureAwait(false); return(new BigInteger(bytes.Reverse().ToArray())); }
/// <inheritdoc /> protected override async Task <string> ReadValueAsync(Stream stream, GraphBinaryReader reader) { var length = (int)await reader.ReadValueAsync <int>(stream, false).ConfigureAwait(false); var bytes = new byte[length]; await stream.ReadAsync(bytes, 0, length).ConfigureAwait(false); return(Encoding.UTF8.GetString(bytes)); }
/// <inheritdoc /> protected override async Task <byte[]> ReadValueAsync(Stream stream, GraphBinaryReader reader) { var length = (int)await reader.ReadValueAsync <int>(stream, false).ConfigureAwait(false); var buffer = new byte[length]; await stream.ReadAsync(buffer, 0, length).ConfigureAwait(false); return(buffer); }
/// <inheritdoc /> protected override async Task <Edge> ReadValueAsync(Stream stream, GraphBinaryReader reader) { var id = await reader.ReadAsync(stream).ConfigureAwait(false); var label = (string)await reader.ReadValueAsync <string>(stream, false).ConfigureAwait(false); var inV = new Vertex(await reader.ReadAsync(stream).ConfigureAwait(false), (string)await reader.ReadValueAsync <string>(stream, false).ConfigureAwait(false)); var outV = new Vertex(await reader.ReadAsync(stream).ConfigureAwait(false), (string)await reader.ReadValueAsync <string>(stream, false).ConfigureAwait(false)); // discard possible parent vertex await reader.ReadAsync(stream).ConfigureAwait(false); // discard possible properties await reader.ReadAsync(stream).ConfigureAwait(false); return(new Edge(id, outV, label, inV)); }
/// <inheritdoc /> protected override async Task <Vertex> ReadValueAsync(Stream stream, GraphBinaryReader reader) { var v = new Vertex(await reader.ReadAsync(stream).ConfigureAwait(false), (string)await reader.ReadValueAsync <string>(stream, false).ConfigureAwait(false)); // discard properties await reader.ReadAsync(stream).ConfigureAwait(false); return(v); }
/// <inheritdoc /> protected override async Task <Property> ReadValueAsync(Stream stream, GraphBinaryReader reader) { var p = new Property((string)await reader.ReadValueAsync <string>(stream, false).ConfigureAwait(false), await reader.ReadAsync(stream).ConfigureAwait(false)); // discard parent element await reader.ReadAsync(stream).ConfigureAwait(false); return(p); }
/// <inheritdoc /> protected override async Task <TList> ReadValueAsync(Stream stream, GraphBinaryReader reader) { var length = (int)await reader.ReadValueAsync <int>(stream, false).ConfigureAwait(false); var result = new TList(); for (var i = 0; i < length; i++) { var value = await reader.ReadAsync(stream).ConfigureAwait(false); var bulk = (long)await reader.ReadValueAsync <long>(stream, false).ConfigureAwait(false); for (var j = 0; j < bulk; j++) { result.Add(value); } } return(result); }
private static async Task <object[]> ReadArgumentsAsync(Stream stream, GraphBinaryReader reader) { var valuesLength = (int)await reader.ReadValueAsync <int>(stream, false).ConfigureAwait(false); var values = new object[valuesLength]; for (var i = 0; i < valuesLength; i++) { values[i] = await reader.ReadAsync(stream).ConfigureAwait(false); } return(values); }
/// <inheritdoc /> protected override async Task <Bytecode> ReadValueAsync(Stream stream, GraphBinaryReader reader) { var result = new Bytecode(); var stepsLength = (int)await reader.ReadValueAsync <int>(stream, false).ConfigureAwait(false); for (var i = 0; i < stepsLength; i++) { result.AddStep((string)await reader.ReadValueAsync <string>(stream, false).ConfigureAwait(false), await ReadArgumentsAsync(stream, reader).ConfigureAwait(false)); } var sourcesLength = await stream.ReadIntAsync().ConfigureAwait(false); for (var i = 0; i < sourcesLength; i++) { result.AddSource((string)await reader.ReadValueAsync <string>(stream, false).ConfigureAwait(false), await ReadArgumentsAsync(stream, reader).ConfigureAwait(false)); } return(result); }
/// <inheritdoc /> protected override async Task <TSet> ReadValueAsync(Stream stream, GraphBinaryReader reader) { var length = (int)await reader.ReadValueAsync <int>(stream, false).ConfigureAwait(false); var result = new TSet(); for (var i = 0; i < length; i++) { result.Add((TMember)await reader.ReadAsync(stream).ConfigureAwait(false)); } return(result); }
/// <inheritdoc /> protected override async Task <VertexProperty> ReadValueAsync(Stream stream, GraphBinaryReader reader) { var vp = new VertexProperty(await reader.ReadAsync(stream).ConfigureAwait(false), (string)await reader.ReadValueAsync <string>(stream, false).ConfigureAwait(false), await reader.ReadAsync(stream).ConfigureAwait(false)); // discard the parent vertex await reader.ReadAsync(stream).ConfigureAwait(false); // discard the properties await reader.ReadAsync(stream).ConfigureAwait(false); return(vp); }