run<R> static method
Run anything inside this request context.
This establishes a zone where the request is available via RequestContext.request. The function will be executed and any request-scoped data will be cleaned up automatically when the function completes.
Example:
return RequestContext.run(request, () {
// Now RequestContext.request is available
final userId = RequestContext.userId;
return processRequest();
});
Implementation
static R run<R>(Request request, R Function() body) {
final stopwatch = Stopwatch()..start();
try {
return runZoned(
() {
final result = body();
return result;
},
zoneValues: {
ServerContext.zoneKey: ServerContext(request: request),
},
);
} finally {
stopwatch.stop();
// Optional: Log slow requests
if (stopwatch.elapsedMilliseconds > 1000) {
Khadem.logger.warning(
'[RequestContext] Slow request: ${request.method} ${request.path} took ${stopwatch.elapsedMilliseconds}ms',
);
}
}
}