Home Reference Source Repository

src/sender/ProcessSender.js

import Sender from './Sender';
import warning from '../warning';

export default class ProcessSender extends Sender {
  constructor(options = {}) {
    super();
    if (!process.send) {
      warning('Process Sender only can work in clusters mode. This Process Sender will not send metricses.');
      process.send = () => {
      };
    }
    this.sendClient(options.host, options.port);
  }

  sendClient(host, port) {
    if (!host || !port) {
      return Promise.resolve();
    }
    return new Promise((resolve, reject) => {
      try {
        process.send({ client: { host, port } });
        return resolve({ host, port });
      } catch (error) {
        return reject(error);
      }
    });
  }

  send(metrics) {
    return new Promise((resolve, reject) => {
      try {
        process.send({ metrics });
        return resolve(metrics);
      } catch (error) {
        return reject(error);
      }
    });
  }
}