@pandorajs/hub
Version:
pandora.js messenge hub
110 lines • 3.38 kB
JavaScript
"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