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);
}
});
}