1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- 'use strict';
- const cluster = require('./');
- const utils = require('./utils');
- const Base = require('sdk-base');
- const is = require('is-type-of');
- class APIClientBase extends Base {
- constructor(options) {
- options = options || {};
- super(options);
- const wrapper = (options.cluster || cluster)(
- this.DataClient, this.clusterOptions
- );
- for (const from in this.delegates) {
- const to = this.delegates[from];
- wrapper.delegate(from, to);
- }
- this._client = wrapper.create(options);
- utils.delegateEvents(this._client, this);
- if (!options.initMethod) {
- this._client.ready(err => {
- this.ready(err ? err : true);
- });
- }
- }
- get isClusterClientLeader() {
- return this._client.isClusterClientLeader;
- }
- close() {
- if (is.function(this._client.close)) {
- return this._client.close();
- }
- return cluster.close(this._client);
- }
- get DataClient() {
- /* istanbul ignore next */
- throw new Error('[APIClient] DataClient is required');
- }
- /**
- * the cluster options
- *
- * @property {Object} APIClientBase#clusterOptions
- */
- get clusterOptions() {
- /* istanbul ignore next */
- return {};
- }
- /**
- * the delegates map
- *
- * @example
- * ---------------------------
- * delegates => {
- * subscribe: 'subscribe',
- * foo: 'invoke',
- * }
- *
- * @property {Object} APIClientBase#delegates
- */
- get delegates() {
- /* istanbul ignore next */
- return {};
- }
- }
- module.exports = APIClientBase;
|