Skip to content

Instantly share code, notes, and snippets.

@mgodave
Last active November 14, 2024 23:42
Show Gist options
  • Save mgodave/5772193156ca740ea90ca11bafb3da56 to your computer and use it in GitHub Desktop.
Save mgodave/5772193156ca740ea90ca11bafb3da56 to your computer and use it in GitHub Desktop.
5d4
< import io.servicetalk.concurrent.api.AsyncCloseable;
14d12
< import io.servicetalk.encoding.api.Identity;
26d23
< import io.servicetalk.grpc.api.GrpcPayloadWriter;
28d24
< import io.servicetalk.grpc.api.GrpcSerializationProvider;
34d29
< import io.servicetalk.grpc.protobuf.ProtoBufSerializationProviderBuilder;
36d30
< import java.lang.Deprecated;
41,42d34
< import java.lang.String;
< import java.time.Duration;
77,90d68
< private static GrpcSerializationProvider initSerializationProvider(
< final List<ContentCodec> supportedMessageCodings) {
< ProtoBufSerializationProviderBuilder builder = new ProtoBufSerializationProviderBuilder();
< builder.supportedMessageCodings(supportedMessageCodings);
< builder.registerMessageType(TestRequest.class, TestRequest.parser());
< builder.registerMessageType(TestResponse.class, TestResponse.parser());
< return builder.build();
< }
<
< private static boolean isSupportedMessageCodingsEmpty(
< final List<ContentCodec> supportedMessageCodings) {
< return supportedMessageCodings.isEmpty() || (supportedMessageCodings.size() == 1 && Identity.identity().equals(supportedMessageCodings.get(0)));
< }
<
93,98d70
< /**
< * @deprecated Use {@link #methodDescriptor}.
< */
< @Deprecated
< String PATH = "/grpc.netty.Tester/test";
<
113,118d84
< /**
< * @deprecated Use {@link #methodDescriptor}.
< */
< @Deprecated
< String PATH = "/grpc.netty.Tester/test";
<
135,140d100
< /**
< * @deprecated Use {@link #methodDescriptor}.
< */
< @Deprecated
< String PATH = "/grpc.netty.Tester/testBiDiStream";
<
156,161d115
< /**
< * @deprecated Use {@link #methodDescriptor}.
< */
< @Deprecated
< String PATH = "/grpc.netty.Tester/testBiDiStream";
<
167d120
< * @param ctx context associated with this service and request.
169,184d121
< * @param responseWriter used to write a stream of type {@link TestResponse} to the client.
< * The implementation of this method is responsible for calling {@link GrpcPayloadWriter#close()}.
< * @throws Exception if an unexpected application error occurs.
< * @throws io.servicetalk.grpc.api.GrpcStatusException if an expected application exception occurs. Its contents will be serialized and propagated to the peer.
< * @deprecated Use {@link #testBiDiStream(GrpcServiceContext, BlockingIterable, BlockingStreamingGrpcServerResponse)}.
< * In the next release, this method will have a default implementation but the new overload won't.
< * To avoid breaking API changes, make sure to implement both methods. The release after next will remove this method.
< * This intermediate step is necessary to maintain {@link FunctionalInterface} contract that requires to have a single non-default method.
< */
< @Deprecated
< void testBiDiStream(GrpcServiceContext ctx, BlockingIterable<TestRequest> request,
< GrpcPayloadWriter<TestResponse> responseWriter) throws Exception;
<
< /**
< * @param ctx context associated with this service and request.
< * @param request used to read the stream of type {@link TestRequest} from the client.
186c123
< * The implementation of this method is responsible for calling {@link GrpcPayloadWriter#close()}.
---
> * The implementation of this method is responsible for calling {@link io.servicetalk.grpc.api.GrpcPayloadWriter#close()}.
190,193c127,128
< default void testBiDiStream(GrpcServiceContext ctx, BlockingIterable<TestRequest> request,
< BlockingStreamingGrpcServerResponse<TestResponse> response) throws Exception {
< testBiDiStream(ctx, request, response.sendMetaData());
< }
---
> void testBiDiStream(GrpcServiceContext ctx, BlockingIterable<TestRequest> request,
> BlockingStreamingGrpcServerResponse<TestResponse> response) throws Exception;
198,203d132
< /**
< * @deprecated Use {@link #methodDescriptor}.
< */
< @Deprecated
< String PATH = "/grpc.netty.Tester/testResponseStream";
<
218,223d146
< /**
< * @deprecated Use {@link #methodDescriptor}.
< */
< @Deprecated
< String PATH = "/grpc.netty.Tester/testResponseStream";
<
229d151
< * @param ctx context associated with this service and request.
231,246d152
< * @param responseWriter used to write a stream of type {@link TestResponse} to the client.
< * The implementation of this method is responsible for calling {@link GrpcPayloadWriter#close()}.
< * @throws Exception if an unexpected application error occurs.
< * @throws io.servicetalk.grpc.api.GrpcStatusException if an expected application exception occurs. Its contents will be serialized and propagated to the peer.
< * @deprecated Use {@link #testResponseStream(GrpcServiceContext, TestRequest, BlockingStreamingGrpcServerResponse)}.
< * In the next release, this method will have a default implementation but the new overload won't.
< * To avoid breaking API changes, make sure to implement both methods. The release after next will remove this method.
< * This intermediate step is necessary to maintain {@link FunctionalInterface} contract that requires to have a single non-default method.
< */
< @Deprecated
< void testResponseStream(GrpcServiceContext ctx, TestRequest request,
< GrpcPayloadWriter<TestResponse> responseWriter) throws Exception;
<
< /**
< * @param ctx context associated with this service and request.
< * @param request the request from the client.
248c154
< * The implementation of this method is responsible for calling {@link GrpcPayloadWriter#close()}.
---
> * The implementation of this method is responsible for calling {@link io.servicetalk.grpc.api.GrpcPayloadWriter#close()}.
252,255c158,159
< default void testResponseStream(GrpcServiceContext ctx, TestRequest request,
< BlockingStreamingGrpcServerResponse<TestResponse> response) throws Exception {
< testResponseStream(ctx, request, response.sendMetaData());
< }
---
> void testResponseStream(GrpcServiceContext ctx, TestRequest request,
> BlockingStreamingGrpcServerResponse<TestResponse> response) throws Exception;
260,265d163
< /**
< * @deprecated Use {@link #methodDescriptor}.
< */
< @Deprecated
< String PATH = "/grpc.netty.Tester/testRequestStream";
<
281,286d178
< /**
< * @deprecated Use {@link #methodDescriptor}.
< */
< @Deprecated
< String PATH = "/grpc.netty.Tester/testRequestStream";
<
355,436d246
< /**
< * Create a new instance.
< *
< * @param service a service to handle incoming requests
< * @param supportedMessageCodings the set of allowed encodings
< * @deprecated Use {@link Builder#Builder()}, {@link Builder#bufferDecoderGroup(BufferDecoderGroup)}, and {@link Builder#bufferEncoders(List)}.
< */
< @Deprecated
< public ServiceFactory(final TesterService service,
< final List<ContentCodec> supportedMessageCodings) {
< this(new Builder(supportedMessageCodings).test(service).testBiDiStream(service).testResponseStream(service).testRequestStream(service));
< }
<
< /**
< * Create a new instance.
< *
< * @param service a service to handle incoming requests
< * @param strategyFactory a factory that creates an execution strategy for different {@link io.servicetalk.router.api.RouteExecutionStrategy#id() id}s
< * @deprecated Use {@link Builder#Builder()} and set the custom strategy on {@link Builder#routeExecutionStrategyFactory(RouteExecutionStrategyFactory)} instead.
< */
< @Deprecated
< public ServiceFactory(final TesterService service,
< final RouteExecutionStrategyFactory<GrpcExecutionStrategy> strategyFactory) {
< this(new Builder(strategyFactory).test(service).testBiDiStream(service).testResponseStream(service).testRequestStream(service));
< }
<
< /**
< * Create a new instance.
< *
< * @param service a service to handle incoming requests
< * @param strategyFactory a factory that creates an execution strategy for different {@link io.servicetalk.router.api.RouteExecutionStrategy#id() id}s
< * @param supportedMessageCodings the set of allowed encodings
< * @deprecated Use {@link Builder#Builder(RouteExecutionStrategyFactory)}, {@link Builder#bufferDecoderGroup(BufferDecoderGroup)}, and {@link Builder#bufferEncoders(List)}.
< */
< @Deprecated
< public ServiceFactory(final TesterService service,
< final RouteExecutionStrategyFactory<GrpcExecutionStrategy> strategyFactory,
< final List<ContentCodec> supportedMessageCodings) {
< this(new Builder(strategyFactory, supportedMessageCodings).test(service).testBiDiStream(service).testResponseStream(service).testRequestStream(service));
< }
<
< /**
< * Create a new instance.
< *
< * @param service a service to handle incoming requests
< * @param supportedMessageCodings the set of allowed encodings
< * @deprecated Use {@link Builder#Builder()}, {@link Builder#bufferDecoderGroup(BufferDecoderGroup)}, and {@link Builder#bufferEncoders(List)}.
< */
< @Deprecated
< public ServiceFactory(final BlockingTesterService service,
< final List<ContentCodec> supportedMessageCodings) {
< this(new Builder(supportedMessageCodings).testBlocking(service).testBiDiStreamBlocking(service).testResponseStreamBlocking(service).testRequestStreamBlocking(service));
< }
<
< /**
< * Create a new instance.
< *
< * @param service a service to handle incoming requests
< * @param strategyFactory a factory that creates an execution strategy for different {@link io.servicetalk.router.api.RouteExecutionStrategy#id() id}s
< * @deprecated Use {@link Builder#Builder()} and set the custom strategy on {@link Builder#routeExecutionStrategyFactory(RouteExecutionStrategyFactory)} instead.
< */
< @Deprecated
< public ServiceFactory(final BlockingTesterService service,
< final RouteExecutionStrategyFactory<GrpcExecutionStrategy> strategyFactory) {
< this(new Builder(strategyFactory).testBlocking(service).testBiDiStreamBlocking(service).testResponseStreamBlocking(service).testRequestStreamBlocking(service));
< }
<
< /**
< * Create a new instance.
< *
< * @param service a service to handle incoming requests
< * @param strategyFactory a factory that creates an execution strategy for different {@link io.servicetalk.router.api.RouteExecutionStrategy#id() id}s
< * @param supportedMessageCodings the set of allowed encodings
< * @deprecated Use {@link Builder#Builder(RouteExecutionStrategyFactory)}, {@link Builder#bufferDecoderGroup(BufferDecoderGroup)}, and {@link Builder#bufferEncoders(List)}.
< */
< @Deprecated
< public ServiceFactory(final BlockingTesterService service,
< final RouteExecutionStrategyFactory<GrpcExecutionStrategy> strategyFactory,
< final List<ContentCodec> supportedMessageCodings) {
< this(new Builder(strategyFactory, supportedMessageCodings).testBlocking(service).testBiDiStreamBlocking(service).testResponseStreamBlocking(service).testRequestStreamBlocking(service));
< }
<
442,488d251
< private final List<ContentCodec> supportedMessageCodings;
<
< /**
< * Create a new instance.
< */
< public Builder() {
< this(Collections.emptyList());
< }
<
< /**
< * Create a new instance.
< *
< * @param supportedMessageCodings the set of allowed encodings
< * @deprecated Use {@link #bufferDecoderGroup(BufferDecoderGroup)} and {@link #bufferEncoders(List)}.
< */
< @Deprecated
< public Builder(final List<ContentCodec> supportedMessageCodings) {
< this.supportedMessageCodings = supportedMessageCodings;
< }
<
< /**
< * Create a new instance.
< *
< * @param strategyFactory a factory that creates an execution strategy for different {@link io.servicetalk.router.api.RouteExecutionStrategy#id() id}s
< * @deprecated use {@link #routeExecutionStrategyFactory(RouteExecutionStrategyFactory)} on the Builder instead.
< */
< @Deprecated
< public Builder(
< final RouteExecutionStrategyFactory<GrpcExecutionStrategy> strategyFactory) {
< this(strategyFactory, Collections.emptyList());
< }
<
< /**
< * Create a new instance.
< *
< * @param strategyFactory a factory that creates an execution strategy for different {@link io.servicetalk.router.api.RouteExecutionStrategy#id() id}s
< * @param supportedMessageCodings the set of allowed encodings
< * @deprecated Use {@link #Builder(RouteExecutionStrategyFactory)}, {@link #bufferDecoderGroup(BufferDecoderGroup)}, and {@link #bufferEncoders(List)}.
< */
< @Deprecated
< public Builder(
< final RouteExecutionStrategyFactory<GrpcExecutionStrategy> strategyFactory,
< final List<ContentCodec> supportedMessageCodings) {
< super(strategyFactory);
< this.supportedMessageCodings = supportedMessageCodings;
< }
<
510,516d272
< @Override
< @Deprecated
< protected TesterServiceFromRoutes newServiceFromRoutes(
< final GrpcRoutes.AllGrpcRoutes routes) {
< return new TesterServiceFromRoutes(routes);
< }
<
520,524c276
< if (supportedMessageCodings.isEmpty()) {
< addRoute(rpc.getClass(), TestRpc.methodDescriptor(), bufferDecoderGroup, bufferEncoders, route);
< } else {
< addRoute(TestRpc.PATH, rpc.getClass(), TestRpc.methodDescriptor().javaMethodName(), route, TestRequest.class, TestResponse.class, initSerializationProvider(supportedMessageCodings));
< }
---
> addRoute(rpc.getClass(), TestRpc.methodDescriptor(), bufferDecoderGroup, bufferEncoders, route);
532,536c284
< if (supportedMessageCodings.isEmpty()) {
< addRoute(strategy, TestRpc.methodDescriptor(), bufferDecoderGroup, bufferEncoders, route);
< } else {
< addRoute(TestRpc.PATH, strategy, route, TestRequest.class, TestResponse.class, initSerializationProvider(supportedMessageCodings));
< }
---
> addRoute(strategy, TestRpc.methodDescriptor(), bufferDecoderGroup, bufferEncoders, route);
543,547c291
< if (supportedMessageCodings.isEmpty()) {
< addBlockingRoute(rpc.getClass(), BlockingTestRpc.methodDescriptor(), bufferDecoderGroup, bufferEncoders, route);
< } else {
< addBlockingRoute(BlockingTestRpc.PATH, rpc.getClass(), BlockingTestRpc.methodDescriptor().javaMethodName(), route, TestRequest.class, TestResponse.class, initSerializationProvider(supportedMessageCodings));
< }
---
> addBlockingRoute(rpc.getClass(), BlockingTestRpc.methodDescriptor(), bufferDecoderGroup, bufferEncoders, route);
556,560c300
< if (supportedMessageCodings.isEmpty()) {
< addBlockingRoute(strategy, BlockingTestRpc.methodDescriptor(), bufferDecoderGroup, bufferEncoders, route);
< } else {
< addBlockingRoute(BlockingTestRpc.PATH, strategy, route, TestRequest.class, TestResponse.class, initSerializationProvider(supportedMessageCodings));
< }
---
> addBlockingRoute(strategy, BlockingTestRpc.methodDescriptor(), bufferDecoderGroup, bufferEncoders, route);
567,571c307
< if (supportedMessageCodings.isEmpty()) {
< addStreamingRoute(rpc.getClass(), TestBiDiStreamRpc.methodDescriptor(), bufferDecoderGroup, bufferEncoders, route);
< } else {
< addStreamingRoute(TestBiDiStreamRpc.PATH, rpc.getClass(), TestBiDiStreamRpc.methodDescriptor().javaMethodName(), route, TestRequest.class, TestResponse.class, initSerializationProvider(supportedMessageCodings));
< }
---
> addStreamingRoute(rpc.getClass(), TestBiDiStreamRpc.methodDescriptor(), bufferDecoderGroup, bufferEncoders, route);
580,584c316
< if (supportedMessageCodings.isEmpty()) {
< addStreamingRoute(strategy, TestBiDiStreamRpc.methodDescriptor(), bufferDecoderGroup, bufferEncoders, route);
< } else {
< addStreamingRoute(TestBiDiStreamRpc.PATH, strategy, route, TestRequest.class, TestResponse.class, initSerializationProvider(supportedMessageCodings));
< }
---
> addStreamingRoute(strategy, TestBiDiStreamRpc.methodDescriptor(), bufferDecoderGroup, bufferEncoders, route);
592d323
< @Deprecated
595,601d325
< GrpcPayloadWriter<TestResponse> responseWriter) throws Exception {
< rpc.testBiDiStream(ctx, request, responseWriter);
< }
<
< @Override
< public void handle(GrpcServiceContext ctx,
< BlockingIterable<TestRequest> request,
617,621c341
< if (supportedMessageCodings.isEmpty()) {
< addBlockingStreamingRoute(rpc.getClass(), BlockingTestBiDiStreamRpc.methodDescriptor(), bufferDecoderGroup, bufferEncoders, route);
< } else {
< addBlockingStreamingRoute(BlockingTestBiDiStreamRpc.PATH, rpc.getClass(), BlockingTestBiDiStreamRpc.methodDescriptor().javaMethodName(), route, TestRequest.class, TestResponse.class, initSerializationProvider(supportedMessageCodings));
< }
---
> addBlockingStreamingRoute(rpc.getClass(), BlockingTestBiDiStreamRpc.methodDescriptor(), bufferDecoderGroup, bufferEncoders, route);
631d350
< @Deprecated
634,640d352
< GrpcPayloadWriter<TestResponse> responseWriter) throws Exception {
< rpc.testBiDiStream(ctx, request, responseWriter);
< }
<
< @Override
< public void handle(GrpcServiceContext ctx,
< BlockingIterable<TestRequest> request,
656,660c368
< if (supportedMessageCodings.isEmpty()) {
< addBlockingStreamingRoute(strategy, BlockingTestBiDiStreamRpc.methodDescriptor(), bufferDecoderGroup, bufferEncoders, route);
< } else {
< addBlockingStreamingRoute(BlockingTestBiDiStreamRpc.PATH, strategy, route, TestRequest.class, TestResponse.class, initSerializationProvider(supportedMessageCodings));
< }
---
> addBlockingStreamingRoute(strategy, BlockingTestBiDiStreamRpc.methodDescriptor(), bufferDecoderGroup, bufferEncoders, route);
667,671c375
< if (supportedMessageCodings.isEmpty()) {
< addResponseStreamingRoute(rpc.getClass(), TestResponseStreamRpc.methodDescriptor(), bufferDecoderGroup, bufferEncoders, route);
< } else {
< addResponseStreamingRoute(TestResponseStreamRpc.PATH, rpc.getClass(), TestResponseStreamRpc.methodDescriptor().javaMethodName(), route, TestRequest.class, TestResponse.class, initSerializationProvider(supportedMessageCodings));
< }
---
> addResponseStreamingRoute(rpc.getClass(), TestResponseStreamRpc.methodDescriptor(), bufferDecoderGroup, bufferEncoders, route);
680,684c384
< if (supportedMessageCodings.isEmpty()) {
< addResponseStreamingRoute(strategy, TestResponseStreamRpc.methodDescriptor(), bufferDecoderGroup, bufferEncoders, route);
< } else {
< addResponseStreamingRoute(TestResponseStreamRpc.PATH, strategy, route, TestRequest.class, TestResponse.class, initSerializationProvider(supportedMessageCodings));
< }
---
> addResponseStreamingRoute(strategy, TestResponseStreamRpc.methodDescriptor(), bufferDecoderGroup, bufferEncoders, route);
692d391
< @Deprecated
694,699d392
< GrpcPayloadWriter<TestResponse> responseWriter) throws Exception {
< rpc.testResponseStream(ctx, request, responseWriter);
< }
<
< @Override
< public void handle(GrpcServiceContext ctx, TestRequest request,
715,719c408
< if (supportedMessageCodings.isEmpty()) {
< addBlockingResponseStreamingRoute(rpc.getClass(), BlockingTestResponseStreamRpc.methodDescriptor(), bufferDecoderGroup, bufferEncoders, route);
< } else {
< addBlockingResponseStreamingRoute(BlockingTestResponseStreamRpc.PATH, rpc.getClass(), BlockingTestResponseStreamRpc.methodDescriptor().javaMethodName(), route, TestRequest.class, TestResponse.class, initSerializationProvider(supportedMessageCodings));
< }
---
> addBlockingResponseStreamingRoute(rpc.getClass(), BlockingTestResponseStreamRpc.methodDescriptor(), bufferDecoderGroup, bufferEncoders, route);
729d417
< @Deprecated
731,736d418
< GrpcPayloadWriter<TestResponse> responseWriter) throws Exception {
< rpc.testResponseStream(ctx, request, responseWriter);
< }
<
< @Override
< public void handle(GrpcServiceContext ctx, TestRequest request,
752,756c434
< if (supportedMessageCodings.isEmpty()) {
< addBlockingResponseStreamingRoute(strategy, BlockingTestResponseStreamRpc.methodDescriptor(), bufferDecoderGroup, bufferEncoders, route);
< } else {
< addBlockingResponseStreamingRoute(BlockingTestResponseStreamRpc.PATH, strategy, route, TestRequest.class, TestResponse.class, initSerializationProvider(supportedMessageCodings));
< }
---
> addBlockingResponseStreamingRoute(strategy, BlockingTestResponseStreamRpc.methodDescriptor(), bufferDecoderGroup, bufferEncoders, route);
763,767c441
< if (supportedMessageCodings.isEmpty()) {
< addRequestStreamingRoute(rpc.getClass(), TestRequestStreamRpc.methodDescriptor(), bufferDecoderGroup, bufferEncoders, route);
< } else {
< addRequestStreamingRoute(TestRequestStreamRpc.PATH, rpc.getClass(), TestRequestStreamRpc.methodDescriptor().javaMethodName(), route, TestRequest.class, TestResponse.class, initSerializationProvider(supportedMessageCodings));
< }
---
> addRequestStreamingRoute(rpc.getClass(), TestRequestStreamRpc.methodDescriptor(), bufferDecoderGroup, bufferEncoders, route);
776,780c450
< if (supportedMessageCodings.isEmpty()) {
< addRequestStreamingRoute(strategy, TestRequestStreamRpc.methodDescriptor(), bufferDecoderGroup, bufferEncoders, route);
< } else {
< addRequestStreamingRoute(TestRequestStreamRpc.PATH, strategy, route, TestRequest.class, TestResponse.class, initSerializationProvider(supportedMessageCodings));
< }
---
> addRequestStreamingRoute(strategy, TestRequestStreamRpc.methodDescriptor(), bufferDecoderGroup, bufferEncoders, route);
787,791c457
< if (supportedMessageCodings.isEmpty()) {
< addBlockingRequestStreamingRoute(rpc.getClass(), BlockingTestRequestStreamRpc.methodDescriptor(), bufferDecoderGroup, bufferEncoders, route);
< } else {
< addBlockingRequestStreamingRoute(BlockingTestRequestStreamRpc.PATH, rpc.getClass(), BlockingTestRequestStreamRpc.methodDescriptor().javaMethodName(), route, TestRequest.class, TestResponse.class, initSerializationProvider(supportedMessageCodings));
< }
---
> addBlockingRequestStreamingRoute(rpc.getClass(), BlockingTestRequestStreamRpc.methodDescriptor(), bufferDecoderGroup, bufferEncoders, route);
800,804c466
< if (supportedMessageCodings.isEmpty()) {
< addBlockingRequestStreamingRoute(strategy, BlockingTestRequestStreamRpc.methodDescriptor(), bufferDecoderGroup, bufferEncoders, route);
< } else {
< addBlockingRequestStreamingRoute(BlockingTestRequestStreamRpc.PATH, strategy, route, TestRequest.class, TestResponse.class, initSerializationProvider(supportedMessageCodings));
< }
---
> addBlockingRequestStreamingRoute(strategy, BlockingTestRequestStreamRpc.methodDescriptor(), bufferDecoderGroup, bufferEncoders, route);
814,825d475
< /**
< * Adds a {@link BlockingTesterService} implementation.
< *
< * @param service the {@link BlockingTesterService} implementation to add.
< * @return this.
< * @deprecated Use {@link #addBlockingService(io.servicetalk.grpc.netty.TesterSt.BlockingTesterService)}.
< */
< @Deprecated
< public Builder addService(final BlockingTesterService service) {
< return addBlockingService(service);
< }
<
834,897d483
<
< @Override
< @Deprecated
< protected void registerRoutes(final TesterService service) {
< test(service);
< testBiDiStream(service);
< testResponseStream(service);
< testRequestStream(service);
< }
<
< @Deprecated
< private static final class TesterServiceFromRoutes implements TesterService {
< private final AsyncCloseable closeable;
<
< private final GrpcRoutes.Route<TestRequest, TestResponse> test;
<
< private final GrpcRoutes.StreamingRoute<TestRequest, TestResponse> testBiDiStream;
<
< private final GrpcRoutes.ResponseStreamingRoute<TestRequest, TestResponse> testResponseStream;
<
< private final GrpcRoutes.RequestStreamingRoute<TestRequest, TestResponse> testRequestStream;
<
< private TesterServiceFromRoutes(final GrpcRoutes.AllGrpcRoutes routes) {
< closeable = routes;
< test = routes.routeFor(TestRpc.methodDescriptor().httpPath());
< testBiDiStream = routes.streamingRouteFor(TestBiDiStreamRpc.methodDescriptor().httpPath());
< testResponseStream = routes.responseStreamingRouteFor(TestResponseStreamRpc.methodDescriptor().httpPath());
< testRequestStream = routes.requestStreamingRouteFor(TestRequestStreamRpc.methodDescriptor().httpPath());
< }
<
< @Override
< public Single<TestResponse> test(final GrpcServiceContext ctx,
< final TestRequest request) {
< return test.handle(ctx, request);
< }
<
< @Override
< public Publisher<TestResponse> testBiDiStream(final GrpcServiceContext ctx,
< final Publisher<TestRequest> request) {
< return testBiDiStream.handle(ctx, request);
< }
<
< @Override
< public Publisher<TestResponse> testResponseStream(final GrpcServiceContext ctx,
< final TestRequest request) {
< return testResponseStream.handle(ctx, request);
< }
<
< @Override
< public Single<TestResponse> testRequestStream(final GrpcServiceContext ctx,
< final Publisher<TestRequest> request) {
< return testRequestStream.handle(ctx, request);
< }
<
< @Override
< public Completable closeAsync() {
< return closeable.closeAsync();
< }
<
< @Override
< public Completable closeAsyncGracefully() {
< return closeable.closeAsyncGracefully();
< }
< }
901,1068d486
< /**
< * @deprecated This class will be removed in the future in favor of direct usage of {@link GrpcClientMetadata}. Deprecation of {@link GrpcClientMetadata#path()} renders this type unnecessary.
< */
< @Deprecated
< public static final class TestMetadata extends DefaultGrpcClientMetadata {
< /**
< * @deprecated Use {@link DefaultGrpcClientMetadata}.
< */
< @Deprecated
< public static final TestMetadata INSTANCE = new TestMetadata();
<
< private TestMetadata(final GrpcClientMetadata metadata) {
< super(TestRpc.PATH, metadata);
< }
<
< private TestMetadata() {
< super(TestRpc.PATH);
< }
<
< public TestMetadata(final GrpcExecutionStrategy strategy) {
< super(TestRpc.PATH, strategy);
< }
<
< public TestMetadata(final Duration timeout) {
< super(TestRpc.PATH, timeout);
< }
<
< public TestMetadata(final ContentCodec requestEncoding) {
< super(TestRpc.PATH, requestEncoding);
< }
<
< public TestMetadata(final GrpcExecutionStrategy strategy,
< final ContentCodec requestEncoding) {
< super(TestRpc.PATH, strategy, requestEncoding);
< }
<
< public TestMetadata(final GrpcExecutionStrategy strategy,
< final ContentCodec requestEncoding, final Duration timeout) {
< super(TestRpc.PATH, strategy, requestEncoding, timeout);
< }
< }
<
< /**
< * @deprecated This class will be removed in the future in favor of direct usage of {@link GrpcClientMetadata}. Deprecation of {@link GrpcClientMetadata#path()} renders this type unnecessary.
< */
< @Deprecated
< public static final class TestBiDiStreamMetadata extends DefaultGrpcClientMetadata {
< /**
< * @deprecated Use {@link DefaultGrpcClientMetadata}.
< */
< @Deprecated
< public static final TestBiDiStreamMetadata INSTANCE = new TestBiDiStreamMetadata();
<
< private TestBiDiStreamMetadata(final GrpcClientMetadata metadata) {
< super(TestBiDiStreamRpc.PATH, metadata);
< }
<
< private TestBiDiStreamMetadata() {
< super(TestBiDiStreamRpc.PATH);
< }
<
< public TestBiDiStreamMetadata(final GrpcExecutionStrategy strategy) {
< super(TestBiDiStreamRpc.PATH, strategy);
< }
<
< public TestBiDiStreamMetadata(final Duration timeout) {
< super(TestBiDiStreamRpc.PATH, timeout);
< }
<
< public TestBiDiStreamMetadata(final ContentCodec requestEncoding) {
< super(TestBiDiStreamRpc.PATH, requestEncoding);
< }
<
< public TestBiDiStreamMetadata(final GrpcExecutionStrategy strategy,
< final ContentCodec requestEncoding) {
< super(TestBiDiStreamRpc.PATH, strategy, requestEncoding);
< }
<
< public TestBiDiStreamMetadata(final GrpcExecutionStrategy strategy,
< final ContentCodec requestEncoding, final Duration timeout) {
< super(TestBiDiStreamRpc.PATH, strategy, requestEncoding, timeout);
< }
< }
<
< /**
< * @deprecated This class will be removed in the future in favor of direct usage of {@link GrpcClientMetadata}. Deprecation of {@link GrpcClientMetadata#path()} renders this type unnecessary.
< */
< @Deprecated
< public static final class TestResponseStreamMetadata extends DefaultGrpcClientMetadata {
< /**
< * @deprecated Use {@link DefaultGrpcClientMetadata}.
< */
< @Deprecated
< public static final TestResponseStreamMetadata INSTANCE = new TestResponseStreamMetadata();
<
< private TestResponseStreamMetadata(final GrpcClientMetadata metadata) {
< super(TestResponseStreamRpc.PATH, metadata);
< }
<
< private TestResponseStreamMetadata() {
< super(TestResponseStreamRpc.PATH);
< }
<
< public TestResponseStreamMetadata(final GrpcExecutionStrategy strategy) {
< super(TestResponseStreamRpc.PATH, strategy);
< }
<
< public TestResponseStreamMetadata(final Duration timeout) {
< super(TestResponseStreamRpc.PATH, timeout);
< }
<
< public TestResponseStreamMetadata(final ContentCodec requestEncoding) {
< super(TestResponseStreamRpc.PATH, requestEncoding);
< }
<
< public TestResponseStreamMetadata(final GrpcExecutionStrategy strategy,
< final ContentCodec requestEncoding) {
< super(TestResponseStreamRpc.PATH, strategy, requestEncoding);
< }
<
< public TestResponseStreamMetadata(final GrpcExecutionStrategy strategy,
< final ContentCodec requestEncoding, final Duration timeout) {
< super(TestResponseStreamRpc.PATH, strategy, requestEncoding, timeout);
< }
< }
<
< /**
< * @deprecated This class will be removed in the future in favor of direct usage of {@link GrpcClientMetadata}. Deprecation of {@link GrpcClientMetadata#path()} renders this type unnecessary.
< */
< @Deprecated
< public static final class TestRequestStreamMetadata extends DefaultGrpcClientMetadata {
< /**
< * @deprecated Use {@link DefaultGrpcClientMetadata}.
< */
< @Deprecated
< public static final TestRequestStreamMetadata INSTANCE = new TestRequestStreamMetadata();
<
< private TestRequestStreamMetadata(final GrpcClientMetadata metadata) {
< super(TestRequestStreamRpc.PATH, metadata);
< }
<
< private TestRequestStreamMetadata() {
< super(TestRequestStreamRpc.PATH);
< }
<
< public TestRequestStreamMetadata(final GrpcExecutionStrategy strategy) {
< super(TestRequestStreamRpc.PATH, strategy);
< }
<
< public TestRequestStreamMetadata(final Duration timeout) {
< super(TestRequestStreamRpc.PATH, timeout);
< }
<
< public TestRequestStreamMetadata(final ContentCodec requestEncoding) {
< super(TestRequestStreamRpc.PATH, requestEncoding);
< }
<
< public TestRequestStreamMetadata(final GrpcExecutionStrategy strategy,
< final ContentCodec requestEncoding) {
< super(TestRequestStreamRpc.PATH, strategy, requestEncoding);
< }
<
< public TestRequestStreamMetadata(final GrpcExecutionStrategy strategy,
< final ContentCodec requestEncoding, final Duration timeout) {
< super(TestRequestStreamRpc.PATH, strategy, requestEncoding, timeout);
< }
< }
<
1082c500
< return test(new TestMetadata(metadata), request);
---
> return Single.failed(new UnsupportedOperationException("This method is not implemented by " + getClass() + ". Consider migrating to an alternative method or implement this method if it's required temporarily."));
1086,1096d503
< * @deprecated Use {@link #test(GrpcClientMetadata,TestRequest)}.
< * @param metadata the metadata associated with this client call.
< * @param request the request to send to the server.
< * @return a {@link Single} which completes when the response is received from the server.
< */
< @Deprecated
< default Single<TestResponse> test(TestMetadata metadata, TestRequest request) {
< return Single.failed(new UnsupportedOperationException("This method is not implemented by " + getClass() + ". Consider migrating Consider migrating to an alternative method or implement this method if it's required temporarily."));
< }
<
< /**
1109c516
< return testBiDiStream(new TestBiDiStreamMetadata(metadata), request);
---
> return Publisher.failed(new UnsupportedOperationException("This method is not implemented by " + getClass() + ". Consider migrating to an alternative method or implement this method if it's required temporarily."));
1113,1124d519
< * @deprecated Use {@link #testBiDiStream(GrpcClientMetadata,Publisher)}.
< * @param metadata the metadata associated with this client call.
< * @param request used to write a stream of type {@link TestRequest} to the server.
< * @return used to read a stream of type {@link TestResponse} from the server.
< */
< @Deprecated
< default Publisher<TestResponse> testBiDiStream(TestBiDiStreamMetadata metadata,
< Publisher<TestRequest> request) {
< return Publisher.failed(new UnsupportedOperationException("This method is not implemented by " + getClass() + ". Consider migrating Consider migrating to an alternative method or implement this method if it's required temporarily."));
< }
<
< /**
1137c532
< return testResponseStream(new TestResponseStreamMetadata(metadata), request);
---
> return Publisher.failed(new UnsupportedOperationException("This method is not implemented by " + getClass() + ". Consider migrating to an alternative method or implement this method if it's required temporarily."));
1141,1152d535
< * @deprecated Use {@link #testResponseStream(GrpcClientMetadata,TestRequest)}.
< * @param metadata the metadata associated with this client call.
< * @param request the request to send to the server.
< * @return used to read a stream of type {@link TestResponse} from the server.
< */
< @Deprecated
< default Publisher<TestResponse> testResponseStream(TestResponseStreamMetadata metadata,
< TestRequest request) {
< return Publisher.failed(new UnsupportedOperationException("This method is not implemented by " + getClass() + ". Consider migrating Consider migrating to an alternative method or implement this method if it's required temporarily."));
< }
<
< /**
1165c548
< return testRequestStream(new TestRequestStreamMetadata(metadata), request);
---
> return Single.failed(new UnsupportedOperationException("This method is not implemented by " + getClass() + ". Consider migrating to an alternative method or implement this method if it's required temporarily."));
1168,1179d550
< /**
< * @deprecated Use {@link #testRequestStream(GrpcClientMetadata,Publisher)}.
< * @param metadata the metadata associated with this client call.
< * @param request used to write a stream of type {@link TestRequest} to the server.
< * @return a {@link Single} which completes when the response is received from the server.
< */
< @Deprecated
< default Single<TestResponse> testRequestStream(TestRequestStreamMetadata metadata,
< Publisher<TestRequest> request) {
< return Single.failed(new UnsupportedOperationException("This method is not implemented by " + getClass() + ". Consider migrating Consider migrating to an alternative method or implement this method if it's required temporarily."));
< }
<
1196d566
< * @deprecated Use {@link #test(GrpcClientMetadata,TestRequest)}.
1203,1214d572
< @Deprecated
< default TestResponse test(TestMetadata metadata, TestRequest request) throws Exception {
< throw new UnsupportedOperationException("This method is not implemented by " + getClass() + ". Consider migrating to an alternative method or implement this method if it's required temporarily.");
< }
<
< /**
< * @param metadata the metadata associated with this client call.
< * @param request the request from the client.
< * @return the response from the server.
< * @throws Exception if an unexpected application error occurs.
< * @throws io.servicetalk.grpc.api.GrpcStatusException if an expected application exception occurs. Its contents will be serialized and propagated to the peer.
< */
1217c575
< return test(new TestMetadata(metadata), request);
---
> throw new UnsupportedOperationException("This method is not implemented by " + getClass() + ". Consider migrating to an alternative method or implement this method if it's required temporarily.");
1230d587
< * @deprecated Use {@link #testBiDiStream(GrpcClientMetadata,Iterable)}.
1237,1238c594
< @Deprecated
< default BlockingIterable<TestResponse> testBiDiStream(TestBiDiStreamMetadata metadata,
---
> default BlockingIterable<TestResponse> testBiDiStream(GrpcClientMetadata metadata,
1244,1255d599
< * @param metadata the metadata associated with this client call.
< * @param request used to send a stream of type {@link TestRequest} to the server.
< * @return used to read the response stream of type {@link TestResponse} from the server.
< * @throws Exception if an unexpected application error occurs.
< * @throws io.servicetalk.grpc.api.GrpcStatusException if an expected application exception occurs. Its contents will be serialized and propagated to the peer.
< */
< default BlockingIterable<TestResponse> testBiDiStream(GrpcClientMetadata metadata,
< Iterable<TestRequest> request) throws Exception {
< return testBiDiStream(new TestBiDiStreamMetadata(metadata), request);
< }
<
< /**
1264d607
< * @deprecated Use {@link #testResponseStream(GrpcClientMetadata,TestRequest)}.
1271,1283d613
< @Deprecated
< default BlockingIterable<TestResponse> testResponseStream(
< TestResponseStreamMetadata metadata, TestRequest request) throws Exception {
< throw new UnsupportedOperationException("This method is not implemented by " + getClass() + ". Consider migrating to an alternative method or implement this method if it's required temporarily.");
< }
<
< /**
< * @param metadata the metadata associated with this client call.
< * @param request the request from the client.
< * @return used to read the response stream of type {@link TestResponse} from the server.
< * @throws Exception if an unexpected application error occurs.
< * @throws io.servicetalk.grpc.api.GrpcStatusException if an expected application exception occurs. Its contents will be serialized and propagated to the peer.
< */
1286c616
< return testResponseStream(new TestResponseStreamMetadata(metadata), request);
---
> throw new UnsupportedOperationException("This method is not implemented by " + getClass() + ". Consider migrating to an alternative method or implement this method if it's required temporarily.");
1296,1309d625
<
< /**
< * @deprecated Use {@link #testRequestStream(GrpcClientMetadata,Iterable)}.
< * @param metadata the metadata associated with this client call.
< * @param request used to send a stream of type {@link TestRequest} to the server.
< * @return the response from the server.
< * @throws Exception if an unexpected application error occurs.
< * @throws io.servicetalk.grpc.api.GrpcStatusException if an expected application exception occurs. Its contents will be serialized and propagated to the peer.
< */
< @Deprecated
< default TestResponse testRequestStream(TestRequestStreamMetadata metadata,
< Iterable<TestRequest> request) throws Exception {
< throw new UnsupportedOperationException("This method is not implemented by " + getClass() + ". Consider migrating to an alternative method or implement this method if it's required temporarily.");
< }
1320c636
< return testRequestStream(new TestRequestStreamMetadata(metadata), request);
---
> throw new UnsupportedOperationException("This method is not implemented by " + getClass() + ". Consider migrating to an alternative method or implement this method if it's required temporarily.");
1357d672
< @Deprecated
1359,1364d673
< public TestResponse test(final TestMetadata metadata, final TestRequest request) throws
< Exception {
< return client.test(metadata, request).toFuture().get();
< }
<
< @Override
1376d684
< @Deprecated
1378,1383d685
< public BlockingIterable<TestResponse> testBiDiStream(final TestBiDiStreamMetadata metadata,
< final Iterable<TestRequest> request) throws Exception {
< return client.testBiDiStream(metadata, Publisher.fromIterable(request)).toIterable();
< }
<
< @Override
1395d696
< @Deprecated
1397,1403d697
< public BlockingIterable<TestResponse> testResponseStream(
< final TestResponseStreamMetadata metadata, final TestRequest request) throws
< Exception {
< return client.testResponseStream(metadata, request).toIterable();
< }
<
< @Override
1414,1420d707
<
< @Deprecated
< @Override
< public TestResponse testRequestStream(final TestRequestStreamMetadata metadata,
< final Iterable<TestRequest> request) throws Exception {
< return client.testRequestStream(metadata, Publisher.fromIterable(request)).toFuture().get();
< }
1455,1474c742,745
< if (supportedMessageCodings.isEmpty()) {
< testCall = factory.newCall(TestRpc.methodDescriptor(), bufferDecoderGroup);
< } else {
< testCall = factory.newCall(initSerializationProvider(supportedMessageCodings), TestRequest.class, TestResponse.class);
< }
< if (supportedMessageCodings.isEmpty()) {
< testBiDiStreamCall = factory.newStreamingCall(TestBiDiStreamRpc.methodDescriptor(), bufferDecoderGroup);
< } else {
< testBiDiStreamCall = factory.newStreamingCall(initSerializationProvider(supportedMessageCodings), TestRequest.class, TestResponse.class);
< }
< if (supportedMessageCodings.isEmpty()) {
< testResponseStreamCall = factory.newResponseStreamingCall(TestResponseStreamRpc.methodDescriptor(), bufferDecoderGroup);
< } else {
< testResponseStreamCall = factory.newResponseStreamingCall(initSerializationProvider(supportedMessageCodings), TestRequest.class, TestResponse.class);
< }
< if (supportedMessageCodings.isEmpty()) {
< testRequestStreamCall = factory.newRequestStreamingCall(TestRequestStreamRpc.methodDescriptor(), bufferDecoderGroup);
< } else {
< testRequestStreamCall = factory.newRequestStreamingCall(initSerializationProvider(supportedMessageCodings), TestRequest.class, TestResponse.class);
< }
---
> testCall = factory.newCall(TestRpc.methodDescriptor(), bufferDecoderGroup);
> testBiDiStreamCall = factory.newStreamingCall(TestBiDiStreamRpc.methodDescriptor(), bufferDecoderGroup);
> testResponseStreamCall = factory.newResponseStreamingCall(TestResponseStreamRpc.methodDescriptor(), bufferDecoderGroup);
> testRequestStreamCall = factory.newRequestStreamingCall(TestRequestStreamRpc.methodDescriptor(), bufferDecoderGroup);
1525d795
< @Deprecated
1527,1534d796
< public Single<TestResponse> test(final TestMetadata metadata,
< final TestRequest request) {
< Objects.requireNonNull(metadata);
< Objects.requireNonNull(request);
< return testCall.request(metadata, request);
< }
<
< @Override
1536c798
< return test(supportedMessageCodings.isEmpty() ? new DefaultGrpcClientMetadata() : new TestMetadata(), request);
---
> return test(new DefaultGrpcClientMetadata(), request);
1547d808
< @Deprecated
1549,1556d809
< public Publisher<TestResponse> testBiDiStream(final TestBiDiStreamMetadata metadata,
< final Publisher<TestRequest> request) {
< Objects.requireNonNull(metadata);
< Objects.requireNonNull(request);
< return testBiDiStreamCall.request(metadata, request);
< }
<
< @Override
1558c811
< return testBiDiStream(supportedMessageCodings.isEmpty() ? new DefaultGrpcClientMetadata() : new TestBiDiStreamMetadata(), request);
---
> return testBiDiStream(new DefaultGrpcClientMetadata(), request);
1569d821
< @Deprecated
1571,1578d822
< public Publisher<TestResponse> testResponseStream(
< final TestResponseStreamMetadata metadata, final TestRequest request) {
< Objects.requireNonNull(metadata);
< Objects.requireNonNull(request);
< return testResponseStreamCall.request(metadata, request);
< }
<
< @Override
1580c824
< return testResponseStream(supportedMessageCodings.isEmpty() ? new DefaultGrpcClientMetadata() : new TestResponseStreamMetadata(), request);
---
> return testResponseStream(new DefaultGrpcClientMetadata(), request);
1591d834
< @Deprecated
1593,1600d835
< public Single<TestResponse> testRequestStream(final TestRequestStreamMetadata metadata,
< final Publisher<TestRequest> request) {
< Objects.requireNonNull(metadata);
< Objects.requireNonNull(request);
< return testRequestStreamCall.request(metadata, request);
< }
<
< @Override
1602c837
< return testRequestStream(supportedMessageCodings.isEmpty() ? new DefaultGrpcClientMetadata() : new TestRequestStreamMetadata(), request);
---
> return testRequestStream(new DefaultGrpcClientMetadata(), request);
1627,1646c862,865
< if (supportedMessageCodings.isEmpty()) {
< testCall = factory.newBlockingCall(BlockingTestRpc.methodDescriptor(), bufferDecoderGroup);
< } else {
< testCall = factory.newBlockingCall(initSerializationProvider(supportedMessageCodings), TestRequest.class, TestResponse.class);
< }
< if (supportedMessageCodings.isEmpty()) {
< testBiDiStreamCall = factory.newBlockingStreamingCall(BlockingTestBiDiStreamRpc.methodDescriptor(), bufferDecoderGroup);
< } else {
< testBiDiStreamCall = factory.newBlockingStreamingCall(initSerializationProvider(supportedMessageCodings), TestRequest.class, TestResponse.class);
< }
< if (supportedMessageCodings.isEmpty()) {
< testResponseStreamCall = factory.newBlockingResponseStreamingCall(BlockingTestResponseStreamRpc.methodDescriptor(), bufferDecoderGroup);
< } else {
< testResponseStreamCall = factory.newBlockingResponseStreamingCall(initSerializationProvider(supportedMessageCodings), TestRequest.class, TestResponse.class);
< }
< if (supportedMessageCodings.isEmpty()) {
< testRequestStreamCall = factory.newBlockingRequestStreamingCall(BlockingTestRequestStreamRpc.methodDescriptor(), bufferDecoderGroup);
< } else {
< testRequestStreamCall = factory.newBlockingRequestStreamingCall(initSerializationProvider(supportedMessageCodings), TestRequest.class, TestResponse.class);
< }
---
> testCall = factory.newBlockingCall(BlockingTestRpc.methodDescriptor(), bufferDecoderGroup);
> testBiDiStreamCall = factory.newBlockingStreamingCall(BlockingTestBiDiStreamRpc.methodDescriptor(), bufferDecoderGroup);
> testResponseStreamCall = factory.newBlockingResponseStreamingCall(BlockingTestResponseStreamRpc.methodDescriptor(), bufferDecoderGroup);
> testRequestStreamCall = factory.newBlockingRequestStreamingCall(BlockingTestRequestStreamRpc.methodDescriptor(), bufferDecoderGroup);
1677d895
< @Deprecated
1679,1686d896
< public TestResponse test(final TestMetadata metadata, final TestRequest request) throws
< Exception {
< Objects.requireNonNull(metadata);
< Objects.requireNonNull(request);
< return testCall.request(metadata, request);
< }
<
< @Override
1688c898
< return test(supportedMessageCodings.isEmpty() ? new DefaultGrpcClientMetadata() : new TestMetadata(), request);
---
> return test(new DefaultGrpcClientMetadata(), request);
1699d908
< @Deprecated
1702,1710d910
< final TestBiDiStreamMetadata metadata, final Iterable<TestRequest> request)
< throws Exception {
< Objects.requireNonNull(metadata);
< Objects.requireNonNull(request);
< return testBiDiStreamCall.request(metadata, request);
< }
<
< @Override
< public BlockingIterable<TestResponse> testBiDiStream(
1712c912
< return testBiDiStream(supportedMessageCodings.isEmpty() ? new DefaultGrpcClientMetadata() : new TestBiDiStreamMetadata(), request);
---
> return testBiDiStream(new DefaultGrpcClientMetadata(), request);
1723d922
< @Deprecated
1725,1733d923
< public BlockingIterable<TestResponse> testResponseStream(
< final TestResponseStreamMetadata metadata, final TestRequest request) throws
< Exception {
< Objects.requireNonNull(metadata);
< Objects.requireNonNull(request);
< return testResponseStreamCall.request(metadata, request);
< }
<
< @Override
1736c926
< return testResponseStream(supportedMessageCodings.isEmpty() ? new DefaultGrpcClientMetadata() : new TestResponseStreamMetadata(), request);
---
> return testResponseStream(new DefaultGrpcClientMetadata(), request);
1747d936
< @Deprecated
1749,1756d937
< public TestResponse testRequestStream(final TestRequestStreamMetadata metadata,
< final Iterable<TestRequest> request) throws Exception {
< Objects.requireNonNull(metadata);
< Objects.requireNonNull(request);
< return testRequestStreamCall.request(metadata, request);
< }
<
< @Override
1759c940
< return testRequestStream(supportedMessageCodings.isEmpty() ? new DefaultGrpcClientMetadata() : new TestRequestStreamMetadata(), request);
---
> return testRequestStream(new DefaultGrpcClientMetadata(), request);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment