send: function send()

in packages/core/lib/segment_emitter.js [121:149]


  send: function send(segment) {
    if (!this.socket) {
      if (this.useBatchingTemporarySocket) {
        this.socket = new BatchingTemporarySocket();
      } else {
        this.socket = dgram.createSocket('udp4').unref();
      }
    }
    var client = this.socket;
    var formatted = segment.format();
    var data = PROTOCOL_HEADER + PROTOCOL_DELIMITER + formatted;
    var message = Buffer.from(data);

    var short = '{"trace_id:"' + segment.trace_id + '","id":"' + segment.id + '"}';
    var type = segment.type === 'subsegment' ? 'Subsegment' : 'Segment';

    client.send(message, 0, message.length, this.daemonConfig.udp_port, this.daemonConfig.udp_ip, function(err) {
      if (err) {
        if (err.code === 'EMSGSIZE') {
          logger.getLogger().error(type + ' too large to send: ' + short + ' (' + message.length + ' bytes).');
        } else {
          logger.getLogger().error('Error occured sending segment: ', err);
        }
      } else {
        logger.getLogger().debug(type + ' sent: {"trace_id:"' + segment.trace_id + '","id":"' + segment.id + '"}');
        logger.getLogger().debug('UDP message sent: ' + segment);
      }
    });
  },