UNPKG

nest-cluster-ipc

Version:

A Nest module wrapper for node-cluster-ipc

67 lines 3.47 kB
"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; var __param = (this && this.__param) || function (paramIndex, decorator) { return function (target, key) { decorator(target, key, paramIndex); } }; Object.defineProperty(exports, "__esModule", { value: true }); exports.ClusterIpcExplorer = void 0; const common_1 = require("@nestjs/common"); const core_1 = require("@nestjs/core"); const node_cluster_ipc_1 = require("node-cluster-ipc"); const cluster_ipc_metadata_accessor_1 = require("./cluster-ipc-metadata.accessor"); const cluster_ipc_constants_1 = require("./cluster-ipc.constants"); let ClusterIpcExplorer = class ClusterIpcExplorer { constructor(clusterIpc, discoveryService, metadataAccessor, metadataScanner) { this.clusterIpc = clusterIpc; this.discoveryService = discoveryService; this.metadataAccessor = metadataAccessor; this.metadataScanner = metadataScanner; } onApplicationBootstrap() { this.loadClusterIpcListeners(); } onApplicationShutdown() { this.clusterIpc.removeAllListeners(); } loadClusterIpcListeners() { const providers = this.discoveryService.getProviders(); const controllers = this.discoveryService.getControllers(); [...providers, ...controllers] .filter(wrapper => wrapper.isDependencyTreeStatic()) .filter(wrapper => wrapper.instance) .forEach((wrapper) => { const { instance } = wrapper; const prototype = Object.getPrototypeOf(instance) || {}; this.metadataScanner.scanFromPrototype(instance, prototype, (methodKey) => this.subscribeToClusterIpcIfListener(instance, methodKey)); }); } subscribeToClusterIpcIfListener(instance, methodKey) { const clusterIpcListenerMetadata = this.metadataAccessor.getClusterIpcListenerMetadata(instance[methodKey]); if (!clusterIpcListenerMetadata) return; const { event, channel } = clusterIpcListenerMetadata; const listenerMethod = this.clusterIpc.on.bind(this.clusterIpc); listenerMethod(event, (channe, ...args) => { if (channe === channel) instance[methodKey].call(instance, ...args); }); } }; exports.ClusterIpcExplorer = ClusterIpcExplorer; exports.ClusterIpcExplorer = ClusterIpcExplorer = __decorate([ (0, common_1.Injectable)(), __param(0, (0, common_1.Inject)(cluster_ipc_constants_1.CLUSTER_IPC_INSTANCE)), __metadata("design:paramtypes", [node_cluster_ipc_1.ClusterIpc, core_1.DiscoveryService, cluster_ipc_metadata_accessor_1.ClusterIpcMetadataAccessor, core_1.MetadataScanner]) ], ClusterIpcExplorer); //# sourceMappingURL=cluster-ipc.explorer.js.map