UNPKG

@pandorajs/hub

Version:

pandora.js messenge hub

110 lines 3.38 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.HubFacade = void 0; const HubClient_1 = require("./hub/HubClient"); const ProviderManager_1 = require("./object-proxying/ProviderManager"); const ConsumerManager_1 = require("./object-proxying/ConsumerManager"); const ConfigManager_1 = require("./config-manager/ConfigManager"); const ConfigClient_1 = require("./config-manager/ConfigClient"); class HubFacade { setup(options) { this.location = options.location; this.logger = options.logger || console; } /** * Start Client * @return {Promise<void>} */ async start() { if (!this.getHubClient().isReady()) { await this.getHubClient().start(); } } /** * Stop Client * @return {Promise<void>} */ async stop() { if (this.getHubClient().isReady()) { await this.getHubClient().stop(); } } /** * Get HubClient * @return {HubClient} */ getHubClient() { if (!this.hubClient) { this.hubClient = new HubClient_1.HubClient({ location: this.location, logger: this.logger, }); } return this.hubClient; } /** * Get ProviderManager * @return {ProviderManager} */ getProviderManager() { if (!this.providerManager) { this.providerManager = new ProviderManager_1.ProviderManager(this.getHubClient()); } return this.providerManager; } /** * Get ConsumerManager * @return {ConsumerManager} */ getConsumerManager() { if (!this.consumerManager) { this.consumerManager = new ConsumerManager_1.ConsumerManager(this.getHubClient(), this.getProviderManager()); } return this.consumerManager; } /** * Publish an Object to Hub * @param impl * @param {ObjectDescription} objectDescription * @return {Promise<void>} */ publish(impl, objectDescription) { return this.getProviderManager().publish(impl, objectDescription); } /** * Get a Consumer by an ObjectDescription * @param {ObjectDescription} objectDescription * @param {ConsumerExtInfo} extInfo * @return {ObjectConsumer} */ getConsumer(objectDescription, extInfo) { return this.getConsumerManager().getConsumer(objectDescription, extInfo); } /** * Get an Object Proxy by an ObjectDescription for Remote Object * @param {ObjectDescription} objectDescription * @param {ConsumerExtInfo} extInfo * @return {Promise<T & DefaultObjectProxy>} */ getProxy(objectDescription, extInfo) { return this.getConsumerManager().getProxy(objectDescription, extInfo); } async initConfigManager() { if (!this.configManager) { this.configManager = await ConfigManager_1.ConfigManager.create(this.getProviderManager()); } } async initConfigClient() { if (!this.configClient) { this.configClient = await ConfigClient_1.ConfigClient.create(this.getConsumerManager()); } } getConfigManager() { return this.configManager; } getConfigClient() { return this.configClient; } } exports.HubFacade = HubFacade; //# sourceMappingURL=HubFacade.js.map