UNPKG

@arifwidianto/rpc-agent

Version:

RPC Agent for both client and server, extends more methods easily

121 lines 4.52 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __exportStar = (this && this.__exportStar) || function(m, exports) { for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.AgentClient = exports.AgentService = void 0; const logger_1 = require("./utils/logger"); const rpc_service_1 = require("./services/rpc.service"); __exportStar(require("./services/rpc.service"), exports); __exportStar(require("./interfaces"), exports); class AgentService { rpcService; isShuttingDown = false; extensionPath; constructor(extensionPath = undefined, tcpPort, udpPort) { this.extensionPath = extensionPath; const _tcpPort = Number(process.env.PORT_TCP) || tcpPort || 9101; const _udpPort = Number(process.env.PORT_UDP) || udpPort || 9102; logger_1.logger.info("Starting RPC Agent Service", { tcpPort: _tcpPort, udpPort: _udpPort }); this.rpcService = new rpc_service_1.RPCService(this.extensionPath, _tcpPort, _udpPort); this.setupSignalHandlers(); } setupSignalHandlers() { process.on("SIGTERM", () => this.shutdown()); process.on("SIGINT", () => this.shutdown()); logger_1.logger.info("Signal handlers initialized"); } async start() { try { const { tcp, udp } = await this.rpcService.initialize(); logger_1.logger.info("Agent service initialized successfully", { tcp, udp, }); return { tcp, udp }; } catch (error) { logger_1.logger.error("Failed to initialize RPC service", { error: error.message, stack: error instanceof Error ? error.stack : undefined, }); return { tcp: false, udp: false, }; } } async shutdown() { if (this.isShuttingDown) { return; } this.isShuttingDown = true; logger_1.logger.info("Shutting down RPC Agent Service"); try { await this.rpcService.shutdown(3000); logger_1.logger.info("RPC Agent Service shutdown complete"); process.exit(0); } catch (error) { logger_1.logger.error("Error during shutdown", { error: error.message, stack: error instanceof Error ? error.stack : undefined, }); process.exit(1); } } } exports.AgentService = AgentService; const client_node_1 = require("./client/library/client.node"); __exportStar(require("./client/library/client.node"), exports); __exportStar(require("./client/library/interfaces"), exports); class AgentClient { client; constructor(config, debug = false) { this.client = new client_node_1.RpcClient(config, debug); } async init() { await this.client.init(); } send(method, params) { return this.client.send(method, params); } close() { this.client.close(); } } exports.AgentClient = AgentClient; if (require.main === module) { async function listen(extensionsPath = undefined) { try { const service = new AgentService(extensionsPath, Number(process.env.PORT_TCP || "9101") || 9101, Number(process.env.PORT_UDP || "9102") || 9102); await service.start(); } catch (error) { logger_1.logger.error("Failed to start RPC Agent Service", { error: error.message, stack: error instanceof Error ? error.stack : undefined, }); process.exit(1); } } listen().catch((error) => { logger_1.logger.error("Unhandled error in main", { error: error instanceof Error ? error.message : String(error), stack: error instanceof Error ? error.stack : undefined, }); process.exit(1); }); } //# sourceMappingURL=index.js.map