Nebula
Loading...
Searching...
No Matches
Http::HttpRequestHandler Class Reference

#include <httprequesthandler.h>

Detailed Description

HttpRequestHandlers are attached to the HttpServer and process incoming HTTP requests.

When an Http request comes in, the HttpServer asks every attached HttpRequestHandler until the first one accepts the request. If the HttpRequestHandler accepts the request its HandleRequest() method will be called with a pointer to a content stream. The request handler is expected to write the response to the content stream (IMPORTANT: don't forget to set the MediaType on the stream!) and return with a HttpStatus code.

Inherits Core::RefCounted.

Inherited by Debug::ConsolePageHandler, Debug::CorePageHandler, Debug::DebugPageHandler, Debug::DisplayPageHandler, Debug::HelloWorldRequestHandler, Debug::IoPageHandler, Debug::MemoryPageHandler, Debug::MeshPageHandler, Debug::ShaderPageHandler, Debug::StringAtomPageHandler, Debug::SvgTestPageHandler, Debug::TexturePageHandler, Debug::ThreadPageHandler, and Http::DefaultHttpRequestHandler.

Public Member Functions

 HttpRequestHandler ()
 constructor
 
virtual ~HttpRequestHandler ()
 destructor
 
const Util::StringGetName () const
 get a human readable name of the request handler
 
const Util::StringGetDesc () const
 get a human readable description of the request handler
 
const Util::StringGetRootLocation () const
 get a resource location path which is accepted by the handler (e.g. "/display")
 
- Public Member Functions inherited from Core::RefCounted
 RefCounted ()
 constructor
 
int GetRefCount () const
 get the current refcount
 
void AddRef ()
 increment refcount by one
 
void Release ()
 decrement refcount and destroy object if refcount is zero
 
bool IsInstanceOf (const Rtti &rtti) const
 return true if this object is instance of given class
 
bool IsInstanceOf (const Util::String &className) const
 return true if this object is instance of given class by string
 
bool IsInstanceOf (const Util::FourCC &classFourCC) const
 return true if this object is instance of given class by fourcc
 
bool IsA (const Rtti &rtti) const
 return true if this object is instance of given class, or a derived class
 
bool IsA (const Util::String &rttiName) const
 return true if this object is instance of given class, or a derived class, by string
 
bool IsA (const Util::FourCC &rttiFourCC) const
 return true if this object is instance of given class, or a derived class, by fourcc
 
const Util::StringGetClassName () const
 get the class name
 
Util::FourCC GetClassFourCC () const
 get the class FourCC code
 

Protected Member Functions

virtual void HandleRequest (const Ptr< HttpRequest > &request)
 handle a http request, overwrite this method in you subclass
 
void HandlePendingRequests ()
 handle all pending requests, called by local-thread's HttpServerProxy
 
void PutRequest (const Ptr< HttpRequest > &httpRequest)
 put a request to the pending queue, called by HttpServer thread
 
void SetName (const Util::String &n)
 set human readable name of the request handler
 
void SetDesc (const Util::String &d)
 set human readable description
 
void SetRootLocation (const Util::String &l)
 set the root location of the request handler
 
- Protected Member Functions inherited from Core::RefCounted
virtual ~RefCounted ()
 destructor (called when refcount reaches zero)
 

Protected Attributes

Util::String name
 
Util::String desc
 
Util::String rootLocation
 
Threading::SafeQueue< Ptr< HttpRequest > > pendingRequests
 
Util::Array< Ptr< HttpRequest > > curWorkRequests
 

Private Member Functions

 __DeclareClass (HttpRequestHandler)
 

Friends

class HttpServer
 
class HttpServerProxy
 

Additional Inherited Members

- Static Public Member Functions inherited from Core::RefCounted
static void DumpRefCountingLeaks ()
 dump refcounting leaks, call at end of application (NEBULA_DEBUG builds only!)
 

Constructor & Destructor Documentation

◆ HttpRequestHandler()

Http::HttpRequestHandler::HttpRequestHandler ( )

constructor

◆ ~HttpRequestHandler()

Http::HttpRequestHandler::~HttpRequestHandler ( )
virtual

destructor

Member Function Documentation

◆ __DeclareClass()

Http::HttpRequestHandler::__DeclareClass ( HttpRequestHandler )
private

◆ GetDesc()

const Util::String & Http::HttpRequestHandler::GetDesc ( ) const
inline

get a human readable description of the request handler

◆ GetName()

const Util::String & Http::HttpRequestHandler::GetName ( ) const
inline

get a human readable name of the request handler

◆ GetRootLocation()

const Util::String & Http::HttpRequestHandler::GetRootLocation ( ) const
inline

get a resource location path which is accepted by the handler (e.g. "/display")

◆ HandlePendingRequests()

void Http::HttpRequestHandler::HandlePendingRequests ( )
protected

handle all pending requests, called by local-thread's HttpServerProxy

Handle all pending http requests in the pending queue.

This method must be called frequently from the thread which created this request handler.

◆ HandleRequest()

void Http::HttpRequestHandler::HandleRequest ( const Ptr< HttpRequest > & request)
protectedvirtual

handle a http request, overwrite this method in you subclass

Overwrite this method in your subclass.

This method will be called by the HttpServer if AcceptsRequest() returned true. The request handler should properly process the request by filling the responseContentStream with data (for instance a HTML page), set the MediaType on the responseContentStream (for instance "text/html") and return with a HttpStatus code (usually HttpStatus::OK).

Reimplemented in Debug::ConsolePageHandler, Debug::CorePageHandler, Debug::DebugPageHandler, Debug::DisplayPageHandler, Debug::HelloWorldRequestHandler, Debug::IoPageHandler, Debug::MemoryPageHandler, Debug::MeshPageHandler, Debug::ShaderPageHandler, Debug::StringAtomPageHandler, Debug::SvgTestPageHandler, Debug::TexturePageHandler, Debug::ThreadPageHandler, and Http::DefaultHttpRequestHandler.

◆ PutRequest()

void Http::HttpRequestHandler::PutRequest ( const Ptr< HttpRequest > & httpRequest)
protected

put a request to the pending queue, called by HttpServer thread

Put a http request into the request handlers message queue.

This method is meant to be called from another thread.

◆ SetDesc()

void Http::HttpRequestHandler::SetDesc ( const Util::String & d)
inlineprotected

set human readable description

◆ SetName()

void Http::HttpRequestHandler::SetName ( const Util::String & n)
inlineprotected

set human readable name of the request handler

◆ SetRootLocation()

void Http::HttpRequestHandler::SetRootLocation ( const Util::String & l)
inlineprotected

set the root location of the request handler

Friends And Related Symbol Documentation

◆ HttpServer

friend class HttpServer
friend

◆ HttpServerProxy

friend class HttpServerProxy
friend

Member Data Documentation

◆ curWorkRequests

Util::Array<Ptr<HttpRequest> > Http::HttpRequestHandler::curWorkRequests
protected

◆ desc

Util::String Http::HttpRequestHandler::desc
protected

◆ name

Util::String Http::HttpRequestHandler::name
protected

◆ pendingRequests

Threading::SafeQueue<Ptr<HttpRequest> > Http::HttpRequestHandler::pendingRequests
protected

◆ rootLocation

Util::String Http::HttpRequestHandler::rootLocation
protected

The documentation for this class was generated from the following files: