Page Speed Optimization Libraries
1.3.25.1
|
#include "request_context.h"
Public Member Functions | |
RequestContext (AbstractMutex *logging_mutex) | |
RequestTrace * | root_trace_context () |
void | set_root_trace_context (RequestTrace *x) |
Takes ownership of the given context. | |
virtual RequestTrace * | CreateDependentTraceContext (const StringPiece &label) |
virtual void | ReleaseDependentTraceContext (RequestTrace *t) |
LogRecord * | log_record () |
The log record for the this request, created when the request context is. | |
bool | using_spdy () const |
Determines whether this request is using the SPDY protocol. | |
void | set_using_spdy (bool x) |
Static Public Member Functions | |
static RequestContextPtr | NewTestRequestContext (ThreadSystem *thread_system) |
Protected Member Functions | |
RequestContext () | |
void | set_log_record (LogRecord *l) |
virtual | ~RequestContext () |
Destructors in refcounted classes should be protected. | |
REFCOUNT_FRIEND_DECLARATION (RequestContext) |
A class which wraps state associated with a request.
This object should be reference counted, wrapped in a RequestContextPtr. We use reference counting because, depending on the timing of asynchronous rewrites, RPC calls, and so on, a RequestContext may outlive the original HTTP request serving, or not. Reference counting avoids the complexity of explicit transfer of ownership in these cases.
net_instaweb::RequestContext::RequestContext | ( | AbstractMutex * | logging_mutex | ) | [explicit] |
net_instaweb::RequestContext::RequestContext | ( | ) | [protected] |
The default constructor will not create a LogRecord. Subclass constructors must do this explicitly.
virtual RequestTrace* net_instaweb::RequestContext::CreateDependentTraceContext | ( | const StringPiece & | label | ) | [inline, virtual] |
Creates a new RequestTrace associated with a request depending on the root user request; e.g., a subresource fetch for an HTML page.
This implementation is a no-op. Subclasses should customize this based on their underlying tracing system. A few interface notes:
static RequestContextPtr net_instaweb::RequestContext::NewTestRequestContext | ( | ThreadSystem * | thread_system | ) | [static] |
virtual void net_instaweb::RequestContext::ReleaseDependentTraceContext | ( | RequestTrace * | t | ) | [virtual] |
Releases this object's reference to the given context and frees memory. Calls to CreateDependentTraceContext need not be matched by calls to this function. If a dependent trace span is not released when the request context reference count drops to zero, this object will clean all dependent traces.
Note that automatic cleanup of dependent traces is provided for safety. To provide meaningful performance statistics, cleanup should be coupled with the completion of the event being traced.
Subclasses should customize this based on their underlying tracing system.
RequestTrace* net_instaweb::RequestContext::root_trace_context | ( | ) | [inline] |
The root trace context is associated with the user request which we are attempting to serve. If this is a request with constituent resources that we rewrite, there may be several dependent fetches synthesized by PSOL during rewrites. Those are traced separately.
void net_instaweb::RequestContext::set_log_record | ( | LogRecord * | l | ) | [protected] |
The log record can only be set once. This should only be used by a subclass during initialization.