enable: function enable()

in packages/restify/lib/restify_mw.js [28:81]


  enable: function enable(server, defaultName) {
    if (!server) {
      throw new Error('Restify server instance to enable was not supplied. Please provide a server.');
    }

    if (!defaultName || typeof defaultName !== 'string') {
      throw new Error('Default segment name was not supplied. Please provide a string.');
    }

    mwUtils.setDefaultName(defaultName);
    AWSXRay.getLogger().debug('Enabling AWS X-Ray for Restify.');

    var segment;

    server.use(function open(req, res, next) {
      segment = mwUtils.traceRequestResponseCycle(req, res);

      if (AWSXRay.isAutomaticMode()) {
        var ns = AWSXRay.getNamespace();
        ns.bindEmitter(req);
        ns.bindEmitter(res);

        ns.run(function() {
          AWSXRay.setSegment(segment);

          if (next) {
            next();
          }
        });
      } else {
        if (req.set) {
          req.set('XRaySegment', segment);
        } else {
          req.segment = segment;
        }

        if (next) {
          next();
        }
      }
    });

    server.on('uncaughtException', function uncaughtError(req, res, route, err) {
      if (segment && err) {
        segment.close(err);
      }
    });

    server.on('after', function handledError(req, res, route, err) {
      if (segment && err) {
        segment.addError(err);
      }
    });
  }