web::basic_server Class Reference
[Web client/server base classes]

#include <webserver.hh>

List of all members.

Public Member Functions

 basic_server (int argn, char **argv, int max=20, bool ctrlC=true, int maxretry=0)
virtual ~basic_server ()
virtual void Listen ()
virtual bool Parse (int csock, struct sockaddr *caddr, int clen)
int getPort () const
void SetLog (std::ostream *os)
virtual void Interrupt (int sig)

Protected Member Functions

virtual void Spawn (int csock, struct sockaddr *caddr, int clen)
virtual bool Request (const request_t &request, response_t &response)
virtual bool RequestConnect (const request_t &request, response_t &response)
virtual bool RequestGet (const request_t &request, response_t &response)
virtual bool RequestHead (const request_t &request, response_t &response)
virtual bool RequestPost (const request_t &request, response_t &response)
virtual bool RequestPut (const request_t &request, response_t &response)
virtual bool RequestDelete (const request_t &request, response_t &response)
virtual bool RequestOptions (const request_t &request, response_t &response)
virtual bool RequestTrace (const request_t &request, response_t &response)
virtual bool CheckCache (const request_t &request, response_t &response)
virtual void Close ()

Protected Attributes

thread::recursivemutex fMux
 Server mutex.
webcache fCache
 Web page cache (by defeault caching is disabled).
std::ostream * fLog
 Log file.


Detailed Description

This class implements a simple stand-alone web server. It will listen at the specified port for requests and spawn a thread to process the request. By default it will install a ^C and SIGTERM handler that closes the socket and exits. However, this works only, if only one instance of basic_webserver is created. If the specified number of maximum retries is larger than zero, the server tries to continue running even after a SIGSEGV, SIGBUS, SIGILL or SIGFPE trap. This may lead to unstable operation and inconsistent variable states.

brief Basic web server

Author:
Written January 2002 by Daniel Sigg
Version:
1.0

Constructor & Destructor Documentation

web::basic_server::basic_server ( int  argn,
char **  argv,
int  max = 20,
bool  ctrlC = true,
int  maxretry = 0 
)

Constructs a web server. The following command line arguments are supported: {verbatim} -p <port> Port number for listening socket {verbatim}

brief Constructor

Parameters:
argn Number of cmd line arguments
argv list of cmd line arguments
max Maximum number of allowed threads
ctrlC If true installs a ^C and SIGTERM handler
maxretry Maximum number of recover attempts

virtual web::basic_server::~basic_server (  )  [virtual]

Destructs the web server. Terminates all threads brief Destructor


Member Function Documentation

virtual void web::basic_server::Listen (  )  [virtual]

Starts listening at the port. This method will not return if successful. brief Listen

virtual bool web::basic_server::Parse ( int  csock,
struct sockaddr *  caddr,
int  clen 
) [virtual]

Parse a server request. brief Parse request

Parameters:
csock client socket
caddr client address
clen address length
Returns:
True if request could be processed

int web::basic_server::getPort (  )  const [inline]

Get the port number. brief Get port number

Returns:
port

void web::basic_server::SetLog ( std::ostream *  os  )  [inline]

Set the output log. brief Set log

Parameters:
os Output stream

virtual void web::basic_server::Interrupt ( int  sig  )  [virtual]

Handles ^C and SIGTERM. By default closes the socket and exits brief Handles ^C and SIGTERM

Parameters:
sig Signal

virtual void web::basic_server::Spawn ( int  csock,
struct sockaddr *  caddr,
int  clen 
) [protected, virtual]

Spawn a new server thread. This function is called by Listen whenever a new request is received. brief Spawn

Parameters:
csock client socket
caddr client address
clen address length

virtual bool web::basic_server::Request ( const request_t request,
response_t response 
) [protected, virtual]

Process a request. Can be overriden by descendents. brief Process request

Parameters:
request requested page
response Web page (return)
Returns:
True if request could be processed

virtual bool web::basic_server::RequestConnect ( const request_t request,
response_t response 
) [protected, virtual]

Process a CONNECT request. Can be overriden by descendents. Default handler will return OK. brief Process CONNECT request

Parameters:
request requested page
response Web page (return)
Returns:
True if request could be processed

virtual bool web::basic_server::RequestGet ( const request_t request,
response_t response 
) [protected, virtual]

Process a GET request. Can be overriden by descendents. Default handler will return NOT FOUND. brief Process GET request

Parameters:
request requested page
response Web page (return)
Returns:
True if request could be processed

virtual bool web::basic_server::RequestHead ( const request_t request,
response_t response 
) [protected, virtual]

Process a HEAD request. Can be overriden by descendents. Default handler will call RequestGet and truncate the data field. brief Process HEAD request

Parameters:
request requested page
response Web page (return)
Returns:
True if request could be processed

virtual bool web::basic_server::RequestPost ( const request_t request,
response_t response 
) [protected, virtual]

Process a POST request. Can be overriden by descendents. Default handler will return NOT IMPLEMENTED. brief Process POST request

Parameters:
request requested page
response Web page (return)
Returns:
True if request could be processed

virtual bool web::basic_server::RequestPut ( const request_t request,
response_t response 
) [protected, virtual]

Process a PUT request. Can be overriden by descendents. Default handler will return NOT IMPLEMENTED. brief Process PUT request

Parameters:
request requested page
response Web page (return)
Returns:
True if request could be processed

virtual bool web::basic_server::RequestDelete ( const request_t request,
response_t response 
) [protected, virtual]

Process a DELETE request. Can be overriden by descendents. Default handler will return NOT IMPLEMENTED. brief Process DELETE request

Parameters:
request requested page
response Web page (return)
Returns:
True if request could be processed

virtual bool web::basic_server::RequestOptions ( const request_t request,
response_t response 
) [protected, virtual]

Process a OPTIONS request. Can be overriden by descendents. Default handler will return NOT IMPLEMENTED. brief Process OPTIONS request

Parameters:
request requested page
response Web page (return)
Returns:
True if request could be processed

virtual bool web::basic_server::RequestTrace ( const request_t request,
response_t response 
) [protected, virtual]

Process a TRACE request. Can be overriden by descendents. Default handler will return NOT IMPLEMENTED. brief Process TRACE request

Parameters:
request requested page
response Web page (return)
Returns:
True if request could be processed

virtual bool web::basic_server::CheckCache ( const request_t request,
response_t response 
) [protected, virtual]

Check for cached entry.

Parameters:
request requested page
response Web page (return)
Returns:
True if request was found in cache

virtual void web::basic_server::Close (  )  [protected, virtual]

Close server socket. brief Close server socket


The documentation for this class was generated from the following file:
Generated on Sun Mar 8 19:21:38 2009 for dmt by  doxygen 1.5.4