UNPKG

@sangaman/xud

Version:
60 lines 2.66 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const grpc_1 = __importDefault(require("grpc")); const assert_1 = __importDefault(require("assert")); const GrpcService_1 = __importDefault(require("./GrpcService")); const errors_1 = __importDefault(require("./errors")); const xudrpc_grpc_pb_1 = require("../proto/xudrpc_grpc_pb"); class GrpcServer { constructor(logger, service) { this.logger = logger; /** * Start the server and begin listening on the provided port * @returns true if the server started listening successfully, false otherwise */ this.listen = (port, host) => { assert_1.default(Number.isInteger(port) && port > 1023 && port < 65536, 'port must be an integer between 1024 and 65535'); const bindCode = this.server.bind(`${host}:${port}`, grpc_1.default.ServerCredentials.createInsecure()); if (bindCode !== port) { const error = errors_1.default.COULD_NOT_BIND(port.toString()); this.logger.error(error.message); return false; } this.server.start(); this.logger.info(`gRPC server listening on ${host}:${port}`); return true; }; /** * Stop listening for requests */ this.close = () => { return new Promise((resolve) => { this.server.tryShutdown(() => { this.logger.info('GRPC server completed shutdown'); resolve(); }); }); }; this.server = new grpc_1.default.Server(); const grpcService = new GrpcService_1.default(logger, service); this.server.addService(xudrpc_grpc_pb_1.XudService, { cancelOrder: grpcService.cancelOrder, connect: grpcService.connect, disconnect: grpcService.disconnect, executeSwap: grpcService.executeSwap, getInfo: grpcService.getInfo, getOrders: grpcService.getOrders, getPairs: grpcService.getPairs, placeOrder: grpcService.placeOrder, shutdown: grpcService.shutdown, subscribePeerOrders: grpcService.subscribePeerOrders, subscribeSwaps: grpcService.subscribeSwaps, listPeers: grpcService.listPeers, }); } } exports.default = GrpcServer; //# sourceMappingURL=GrpcServer.js.map