UNPKG

wechaty-grpc

Version:
110 lines (99 loc) 2.94 kB
// package: grpc.health.v1 // file: google/api/health_check/v1/health_check.proto var google_api_health_check_v1_health_check_pb = require("../../../../google/api/health_check/v1/health_check_pb"); var grpc = require("@improbable-eng/grpc-web").grpc; var Health = (function () { function Health() {} Health.serviceName = "grpc.health.v1.Health"; return Health; }()); Health.Check = { methodName: "Check", service: Health, requestStream: false, responseStream: false, requestType: google_api_health_check_v1_health_check_pb.HealthCheckRequest, responseType: google_api_health_check_v1_health_check_pb.HealthCheckResponse }; Health.Watch = { methodName: "Watch", service: Health, requestStream: false, responseStream: true, requestType: google_api_health_check_v1_health_check_pb.HealthCheckRequest, responseType: google_api_health_check_v1_health_check_pb.HealthCheckResponse }; exports.Health = Health; function HealthClient(serviceHost, options) { this.serviceHost = serviceHost; this.options = options || {}; } HealthClient.prototype.check = function check(requestMessage, metadata, callback) { if (arguments.length === 2) { callback = arguments[1]; } var client = grpc.unary(Health.Check, { request: requestMessage, host: this.serviceHost, metadata: metadata, transport: this.options.transport, debug: this.options.debug, onEnd: function (response) { if (callback) { if (response.status !== grpc.Code.OK) { var err = new Error(response.statusMessage); err.code = response.status; err.metadata = response.trailers; callback(err, null); } else { callback(null, response.message); } } } }); return { cancel: function () { callback = null; client.close(); } }; }; HealthClient.prototype.watch = function watch(requestMessage, metadata) { var listeners = { data: [], end: [], status: [] }; var client = grpc.invoke(Health.Watch, { request: requestMessage, host: this.serviceHost, metadata: metadata, transport: this.options.transport, debug: this.options.debug, onMessage: function (responseMessage) { listeners.data.forEach(function (handler) { handler(responseMessage); }); }, onEnd: function (status, statusMessage, trailers) { listeners.status.forEach(function (handler) { handler({ code: status, details: statusMessage, metadata: trailers }); }); listeners.end.forEach(function (handler) { handler({ code: status, details: statusMessage, metadata: trailers }); }); listeners = null; } }); return { on: function (type, handler) { listeners[type].push(handler); return this; }, cancel: function () { listeners = null; client.close(); } }; }; exports.HealthClient = HealthClient;