This is an automated email from the ASF dual-hosted git repository. florianhockmann pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/tinkerpop.git
commit fec78da4711128e9f643a69492dbaaa7817b1f70 Merge: e4acf24c41 08d8618428 Author: Florian Hockmann <[email protected]> AuthorDate: Thu Oct 13 15:20:00 2022 +0200 Merge branch '3.6-dev' CHANGELOG.asciidoc | 1 + gremlin-dotnet/src/Gremlin.Net.Template/Program.cs | 2 - .../src/Gremlin.Net/Driver/Connection.cs | 62 ++++++-- .../src/Gremlin.Net/Driver/ConnectionFactory.cs | 5 +- .../src/Gremlin.Net/Driver/GremlinClient.cs | 5 +- .../Gremlin.Net/Driver/GremlinClientExtensions.cs | 31 ++-- .../src/Gremlin.Net/Driver/IConnection.cs | 3 +- .../src/Gremlin.Net/Driver/IGremlinClient.cs | 5 +- .../src/Gremlin.Net/Driver/IMessageSerializer.cs | 11 +- .../src/Gremlin.Net/Driver/ProxyConnection.cs | 6 +- .../Driver/Remote/DriverRemoteConnection.cs | 12 +- .../ResponseHandlerForSingleRequestMessage.cs | 5 + gremlin-dotnet/src/Gremlin.Net/Driver/Tokens.cs | 1 - .../src/Gremlin.Net/Driver/WebSocketConnection.cs | 22 ++- .../Process/Remote/IRemoteConnection.cs | 4 +- .../Gremlin.Net/Process/Remote/RemoteStrategy.cs | 8 +- .../Process/Remote/RemoteTransaction.cs | 7 +- .../Process/Traversal/ConnectedComponent.cs | 4 - .../Process/Traversal/DefaultTraversal.cs | 11 +- .../src/Gremlin.Net/Process/Traversal/IO.cs | 4 - .../Gremlin.Net/Process/Traversal/ITraversal.cs | 5 +- .../Process/Traversal/ITraversalStrategy.cs | 4 +- .../src/Gremlin.Net/Process/Traversal/PageRank.cs | 4 - .../Gremlin.Net/Process/Traversal/PeerPressure.cs | 4 - .../Gremlin.Net/Process/Traversal/ShortestPath.cs | 4 - .../Strategy/AbstractTraversalStrategy.cs | 3 +- .../Traversal/Strategy/Decoration/SeedStrategy.cs | 2 - .../IO/GraphBinary/GraphBinaryMessageSerializer.cs | 20 ++- .../Structure/IO/GraphBinary/GraphBinaryReader.cs | 24 +-- .../Structure/IO/GraphBinary/GraphBinaryWriter.cs | 43 +++--- .../Structure/IO/GraphBinary/ITypeSerializer.cs | 16 +- .../IO/GraphBinary/RequestMessageSerializer.cs | 19 ++- .../IO/GraphBinary/ResponseMessageSerializer.cs | 26 ++-- .../Structure/IO/GraphBinary/StreamExtensions.cs | 122 +++++++++------ .../IO/GraphBinary/Types/ArraySerializer.cs | 11 +- .../IO/GraphBinary/Types/BigDecimalSerializer.cs | 16 +- .../IO/GraphBinary/Types/BigIntegerSerializer.cs | 15 +- .../IO/GraphBinary/Types/BindingSerializer.cs | 16 +- .../IO/GraphBinary/Types/BulkSetSerializer.cs | 14 +- .../IO/GraphBinary/Types/ByteBufferSerializer.cs | 15 +- .../IO/GraphBinary/Types/ByteCodeSerializer.cs | 52 ++++--- .../IO/GraphBinary/Types/CharSerializer.cs | 13 +- .../IO/GraphBinary/Types/ClassSerializer.cs | 9 +- .../IO/GraphBinary/Types/CustomTypeSerializer.cs | 13 +- .../GraphBinary/Types/DateTimeOffsetSerializer.cs | 12 +- .../IO/GraphBinary/Types/DurationSerializer.cs | 15 +- .../IO/GraphBinary/Types/EdgeSerializer.cs | 40 ++--- .../IO/GraphBinary/Types/EnumSerializer.cs | 14 +- .../IO/GraphBinary/Types/LambdaSerializer.cs | 22 ++- .../IO/GraphBinary/Types/ListSerializer.cs | 15 +- .../IO/GraphBinary/Types/MapSerializer.cs | 19 ++- .../Structure/IO/GraphBinary/Types/PSerializer.cs | 25 +-- .../IO/GraphBinary/Types/PathSerializer.cs | 16 +- .../IO/GraphBinary/Types/PropertySerializer.cs | 20 ++- .../IO/GraphBinary/Types/SetSerializer.cs | 15 +- .../IO/GraphBinary/Types/SimpleTypeSerializer.cs | 35 +++-- .../IO/GraphBinary/Types/SingleTypeSerializer.cs | 49 +++--- .../IO/GraphBinary/Types/StringSerializer.cs | 15 +- .../IO/GraphBinary/Types/TraversalSerializer.cs | 9 +- .../Types/TraversalStrategySerializer.cs | 11 +- .../IO/GraphBinary/Types/TraverserSerializer.cs | 15 +- .../IO/GraphBinary/Types/TypeSerializer.cs | 10 +- .../IO/GraphBinary/Types/UuidSerializer.cs | 71 +++++---- .../GraphBinary/Types/VertexPropertySerializer.cs | 27 ++-- .../IO/GraphBinary/Types/VertexSerializer.cs | 19 ++- .../IO/GraphSON/GraphSONMessageSerializer.cs | 9 +- .../test/Gremlin.Net.Benchmarks/Program.cs | 3 - .../Docs/Reference/IntroTests.cs | 1 - .../Driver/GremlinClientAuthenticationTests.cs | 1 - .../Driver/GremlinClientTests.cs | 18 +++ .../DriverRemoteConnection/GraphTraversalTests.cs | 25 +++ .../RemoteConnectionFactory.cs | 8 +- .../Driver/ConnectionPoolTests.cs | 2 +- .../Gremlin.Net.UnitTest/Driver/ConnectionTests.cs | 171 +++++++++++++++++++-- .../Process/Traversal/GraphTraversalSourceTests.cs | 2 - .../Process/Traversal/TestTraversalStrategy.cs | 3 +- .../GraphBinaryMessageSerializerTests.cs | 28 +++- .../Structure/IO/GraphBinary/GraphBinaryTests.cs | 1 - .../Types/Sample/SamplePersonSerializer.cs | 45 +++--- .../IO/GraphSON/GraphSON3MessageSerializerTests.cs | 58 +++++++ 80 files changed, 1030 insertions(+), 498 deletions(-) diff --cc gremlin-dotnet/src/Gremlin.Net/Driver/Remote/DriverRemoteConnection.cs index c1aad3ad74,831ed9796b..87ac7ea59a --- a/gremlin-dotnet/src/Gremlin.Net/Driver/Remote/DriverRemoteConnection.cs +++ b/gremlin-dotnet/src/Gremlin.Net/Driver/Remote/DriverRemoteConnection.cs @@@ -106,15 -107,18 +107,18 @@@ namespace Gremlin.Net.Driver.Remot /// Submits <see cref="Bytecode" /> for evaluation to a remote Gremlin Server. /// </summary> /// <param name="bytecode">The <see cref="Bytecode" /> to submit.</param> + /// <param name="cancellationToken">The token to cancel the operation. The default value is None.</param> /// <returns>A <see cref="ITraversal" /> allowing to access the results and side-effects.</returns> - public async Task<ITraversal<TStart, TEnd>> SubmitAsync<TStart, TEnd>(Bytecode bytecode) - public async Task<ITraversal<S, E>> SubmitAsync<S, E>(Bytecode bytecode, ++ public async Task<ITraversal<TStart, TEnd>> SubmitAsync<TStart, TEnd>(Bytecode bytecode, + CancellationToken cancellationToken = default) { var requestId = Guid.NewGuid(); - var resultSet = await SubmitBytecodeAsync(requestId, bytecode).ConfigureAwait(false); + var resultSet = await SubmitBytecodeAsync(requestId, bytecode, cancellationToken).ConfigureAwait(false); - return new DriverRemoteTraversal<S, E>(_client, requestId, resultSet); + return new DriverRemoteTraversal<TStart, TEnd>(_client, requestId, resultSet); } - private async Task<IEnumerable<Traverser>> SubmitBytecodeAsync(Guid requestid, Bytecode bytecode) + private async Task<IEnumerable<Traverser>> SubmitBytecodeAsync(Guid requestid, Bytecode bytecode, + CancellationToken cancellationToken) { var requestMsg = RequestMessage.Build(Tokens.OpsBytecode) diff --cc gremlin-dotnet/src/Gremlin.Net/Process/Remote/IRemoteConnection.cs index 029f59fbbd,cf236af585..b721e40c65 --- a/gremlin-dotnet/src/Gremlin.Net/Process/Remote/IRemoteConnection.cs +++ b/gremlin-dotnet/src/Gremlin.Net/Process/Remote/IRemoteConnection.cs @@@ -36,8 -37,9 +37,9 @@@ namespace Gremlin.Net.Process.Remot /// <see cref="ITraversal" />. /// </summary> /// <param name="bytecode">The <see cref="Bytecode" /> to send.</param> + /// <param name="cancellationToken">The token to cancel the operation. The default value is None.</param> /// <returns>The <see cref="ITraversal" /> with the results and optional side-effects.</returns> - Task<ITraversal<TStart, TEnd>> SubmitAsync<TStart, TEnd>(Bytecode bytecode); - Task<ITraversal<S, E>> SubmitAsync<S, E>(Bytecode bytecode, CancellationToken cancellationToken = default); ++ Task<ITraversal<TStart, TEnd>> SubmitAsync<TStart, TEnd>(Bytecode bytecode, CancellationToken cancellationToken = default); /// <summary> /// Creates a <see cref="RemoteTransaction" /> in the context of a <see cref="GraphTraversalSource" /> designed to work with diff --cc gremlin-dotnet/src/Gremlin.Net/Process/Remote/RemoteStrategy.cs index 5bffb1c44b,d84dba108f..aa39f595ae --- a/gremlin-dotnet/src/Gremlin.Net/Process/Remote/RemoteStrategy.cs +++ b/gremlin-dotnet/src/Gremlin.Net/Process/Remote/RemoteStrategy.cs @@@ -44,16 -45,17 +45,17 @@@ namespace Gremlin.Net.Process.Remot } /// <inheritdoc /> - public void Apply<S, E>(ITraversal<S, E> traversal) + public void Apply<TStart, TEnd>(ITraversal<TStart, TEnd> traversal) { - ApplyAsync(traversal).WaitUnwrap(); + ApplyAsync(traversal, CancellationToken.None).WaitUnwrap(); } /// <inheritdoc /> - public async Task ApplyAsync<TStart, TEnd>(ITraversal<TStart, TEnd> traversal) - public async Task ApplyAsync<S, E>(ITraversal<S, E> traversal, CancellationToken cancellationToken = default) ++ public async Task ApplyAsync<TStart, TEnd>(ITraversal<TStart, TEnd> traversal, CancellationToken cancellationToken = default) { if (traversal.Traversers != null) return; - var remoteTraversal = await _remoteConnection.SubmitAsync<TStart, TEnd>(traversal.Bytecode).ConfigureAwait(false); - var remoteTraversal = await _remoteConnection.SubmitAsync<S, E>(traversal.Bytecode, cancellationToken) ++ var remoteTraversal = await _remoteConnection.SubmitAsync<TStart, TEnd>(traversal.Bytecode, cancellationToken) + .ConfigureAwait(false); traversal.Traversers = remoteTraversal.Traversers; } } diff --cc gremlin-dotnet/src/Gremlin.Net/Process/Traversal/DefaultTraversal.cs index 0d2bd8c4a0,191b7a8293..6ca2b0c2d3 --- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/DefaultTraversal.cs +++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/DefaultTraversal.cs @@@ -264,10 -265,12 +265,12 @@@ namespace Gremlin.Net.Process.Traversa /// </summary> /// <typeparam name="TReturn">The return type of the <paramref name="callback" />.</typeparam> /// <param name="callback">The function to execute on the current traversal.</param> + /// <param name="cancellationToken">The token to cancel the operation. The default value is None.</param> /// <returns>The result of the executed <paramref name="callback" />.</returns> - public async Task<TReturn> Promise<TReturn>(Func<ITraversal<TStart, TEnd>, TReturn> callback) - public async Task<TReturn> Promise<TReturn>(Func<ITraversal<S, E>, TReturn> callback, ++ public async Task<TReturn> Promise<TReturn>(Func<ITraversal<TStart, TEnd>, TReturn> callback, + CancellationToken cancellationToken = default) { - await ApplyStrategiesAsync().ConfigureAwait(false); + await ApplyStrategiesAsync(cancellationToken).ConfigureAwait(false); return callback(this); } } diff --cc gremlin-dotnet/src/Gremlin.Net/Process/Traversal/ITraversal.cs index a3393a85d0,f0c682d7b3..e56b7a2296 --- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/ITraversal.cs +++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/ITraversal.cs @@@ -109,7 -110,9 +110,9 @@@ namespace Gremlin.Net.Process.Traversa /// </summary> /// <typeparam name="TReturn">The return type of the <paramref name="callback" />.</typeparam> /// <param name="callback">The function to execute on the current traversal.</param> + /// <param name="cancellationToken">The token to cancel the operation. The default value is None.</param> /// <returns>The result of the executed <paramref name="callback" />.</returns> - Task<TReturn> Promise<TReturn>(Func<ITraversal<TStart, TEnd>, TReturn> callback); - Task<TReturn> Promise<TReturn>(Func<ITraversal<S, E>, TReturn> callback, ++ Task<TReturn> Promise<TReturn>(Func<ITraversal<TStart, TEnd>, TReturn> callback, + CancellationToken cancellationToken = default); } } diff --cc gremlin-dotnet/src/Gremlin.Net/Process/Traversal/ITraversalStrategy.cs index 3e7709cd64,45a0b974e2..20b3bc057d --- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/ITraversalStrategy.cs +++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/ITraversalStrategy.cs @@@ -41,6 -42,7 +42,7 @@@ namespace Gremlin.Net.Process.Traversa /// Applies the strategy to the given <see cref="ITraversal" /> asynchronously. /// </summary> /// <param name="traversal">The <see cref="ITraversal" /> the strategy should be applied to.</param> - Task ApplyAsync<TStart, TEnd>(ITraversal<TStart, TEnd> traversal); + /// <param name="cancellationToken">The token to cancel the operation. The default value is None.</param> - Task ApplyAsync<S, E>(ITraversal<S, E> traversal, CancellationToken cancellationToken = default); ++ Task ApplyAsync<TStart, TEnd>(ITraversal<TStart, TEnd> traversal, CancellationToken cancellationToken = default); } } diff --cc gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/AbstractTraversalStrategy.cs index 8a2c9c5a90,7170aa76f7..11b8528665 --- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/AbstractTraversalStrategy.cs +++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/AbstractTraversalStrategy.cs @@@ -99,7 -100,7 +100,7 @@@ namespace Gremlin.Net.Process.Traversal } /// <inheritdoc /> - public virtual Task ApplyAsync<TStart, TEnd>(ITraversal<TStart, TEnd> traversal) - public virtual Task ApplyAsync<S, E>(ITraversal<S, E> traversal, CancellationToken cancellationToken = default) ++ public virtual Task ApplyAsync<TStart, TEnd>(ITraversal<TStart, TEnd> traversal, CancellationToken cancellationToken = default) { return Task.CompletedTask; } diff --cc gremlin-dotnet/test/Gremlin.Net.UnitTest/Process/Traversal/TestTraversalStrategy.cs index c2330041b5,5a234094af..697b285be3 --- a/gremlin-dotnet/test/Gremlin.Net.UnitTest/Process/Traversal/TestTraversalStrategy.cs +++ b/gremlin-dotnet/test/Gremlin.Net.UnitTest/Process/Traversal/TestTraversalStrategy.cs @@@ -41,7 -42,7 +42,7 @@@ namespace Gremlin.Net.UnitTest.Process. traversal.Traversers = _traversers; } - public Task ApplyAsync<TStart, TEnd>(ITraversal<TStart, TEnd> traversal) - public Task ApplyAsync<S, E>(ITraversal<S, E> traversal, CancellationToken cancellationToken) ++ public Task ApplyAsync<TStart, TEnd>(ITraversal<TStart, TEnd> traversal, CancellationToken cancellationToken) { traversal.Traversers = _traversers; return Task.CompletedTask;
