diff --git a/javascript/net/grpc/web/BUILD.bazel b/javascript/net/grpc/web/BUILD.bazel index 40ca540..4cd859a 100644 --- a/javascript/net/grpc/web/BUILD.bazel +++ b/javascript/net/grpc/web/BUILD.bazel @@ -60,6 +60,17 @@ closure_js_library( visibility = ["//visibility:public"], ) +closure_js_library( + name = "clientunarycallimpl", + srcs = [ + "clientunarycallimpl.js", + ], + visibility = ["//visibility:public"], + deps = [ + ":clientreadablestream", + ], +) + closure_js_library( name = "error", srcs = [ @@ -96,6 +107,7 @@ closure_js_library( deps = [ ":abstractclientbase", ":clientreadablestream", + ":clientunarycallimpl", ":error", ":grpcwebclientreadablestream", ":interceptor", diff --git a/javascript/net/grpc/web/clientunarycallimpl.js b/javascript/net/grpc/web/clientunarycallimpl.js new file mode 100644 index 0000000..9f6111c --- /dev/null +++ b/javascript/net/grpc/web/clientunarycallimpl.js @@ -0,0 +1,51 @@ +/** + * @fileoverview This class handles ClientReadableStream returned by unary + * calls. + */ + +goog.module('grpc.web.ClientUnaryCallImpl'); + +goog.module.declareLegacyNamespace(); + +const ClientReadableStream = goog.require('grpc.web.ClientReadableStream'); + +/** + * @implements {ClientReadableStream} + * @template RESPONSE + */ +class ClientUnaryCallImpl { + /** + * @param {!ClientReadableStream} stream + */ + constructor(stream) { + this.stream = stream; + } + + /** + * @override + */ + on(eventType, callback) { + if (eventType == 'data' || eventType == 'error') { + // unary call responses and errors should be handled by the main + // (err, resp) => ... callback + return this; + } + return this.stream.on(eventType, callback); + } + + /** + * @override + */ + removeListener(eventType, callback) { + return this.stream.removeListener(eventType, callback); + } + + /** + * @override + */ + cancel() { + this.stream.cancel(); + } +} + +exports = ClientUnaryCallImpl; diff --git a/javascript/net/grpc/web/grpcwebclientbase.js b/javascript/net/grpc/web/grpcwebclientbase.js index 446f615..6f93883 100644 --- a/javascript/net/grpc/web/grpcwebclientbase.js +++ b/javascript/net/grpc/web/grpcwebclientbase.js @@ -30,6 +30,7 @@ goog.module.declareLegacyNamespace(); const AbstractClientBase = goog.require('grpc.web.AbstractClientBase'); const ClientReadableStream = goog.require('grpc.web.ClientReadableStream'); +const ClientUnaryCallImpl = goog.require('grpc.web.ClientUnaryCallImpl'); const Error = goog.require('grpc.web.Error'); const GrpcWebClientReadableStream = goog.require('grpc.web.GrpcWebClientReadableStream'); const HttpCors = goog.require('goog.net.rpc.HttpCors'); @@ -95,45 +96,6 @@ class GrpcWebClientBase { * @export */ rpcCall(method, requestMessage, metadata, methodDescriptor, callback) { - /** - * @implements {ClientReadableStream} - */ - class ClientUnaryCallImpl { - /** - * @param {!ClientReadableStream} stream - * @template RESPONSE - */ - constructor(stream) { - this.stream = stream; - } - - /** - * @override - */ - on(eventType, callback) { - if (eventType == 'data' || eventType == 'error') { - // unary call responses and errors should be handled by the main - // (err, resp) => ... callback - return this; - } - return this.stream.on(eventType, callback); - } - - /** - * @override - */ - removeListener(eventType, callback) { - return this.stream.removeListener(eventType, callback); - } - - /** - * @override - */ - cancel() { - this.stream.cancel(); - } - } - methodDescriptor = AbstractClientBase.ensureMethodDescriptor( method, requestMessage, MethodType.UNARY, methodDescriptor); var hostname = AbstractClientBase.getHostname(method, methodDescriptor);