@sangaman/xud
Version:
Exchange Union Daemon
60 lines • 2.66 kB
JavaScript
;
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