private reportFunction()

in src/agent/protocol/grpc/clients/TraceReportClient.ts [53:93]


  private reportFunction(callback?: any) {
    emitter.emit('segments-sent'); // reset limiter in SpanContext

    try {
      if (this.buffer.length === 0) {
        if (callback) callback();

        return;
      }

      const stream = this.reporterClient.collect(
        AuthInterceptor(),
        { deadline: Date.now() + config.traceTimeout },
        (error, _) => {
          if (error) {
            logger.error('Failed to report trace data', error);
          }

          if (callback) callback();
        },
      );

      try {
        for (const segment of this.buffer) {
          if (segment) {
            if (logger._isDebugEnabled) {
              logger.debug('Sending segment ', { segment });
            }

            stream.write(new SegmentObjectAdapter(segment));
          }
        }
      } finally {
        this.buffer.length = 0;
      }

      stream.end();
    } finally {
      this.timeout = setTimeout(this.reportFunction.bind(this), 1000).unref();
    }
  }