pion-net  4.0.9
Classes | Public Member Functions | Protected Member Functions | List of all members
pion::net::WebServer Class Reference

#include <WebServer.hpp>

Inherits pion::net::HTTPServer.

Classes

class  AuthConfigException
 exception thrown if there is an error parsing the authorization config More...
 
class  ConfigNotFoundException
 exception thrown if the web service configuration file cannot be found More...
 
class  ConfigParsingException
 exception thrown if the plug-in file cannot be opened More...
 
class  ServiceNotFoundException
 exception thrown if a web service cannot be found More...
 
class  WebServiceException
 exception used to propagate exceptions thrown by web services More...
 

Public Member Functions

virtual ~WebServer ()
 default destructor
 
 WebServer (const unsigned int tcp_port=0)
 
 WebServer (const boost::asio::ip::tcp::endpoint &endpoint)
 
 WebServer (PionScheduler &scheduler, const unsigned int tcp_port=0)
 
 WebServer (PionScheduler &scheduler, const boost::asio::ip::tcp::endpoint &endpoint)
 
void addService (const std::string &resource, WebService *service_ptr)
 
void loadService (const std::string &resource, const std::string &service_name)
 
void setServiceOption (const std::string &resource, const std::string &name, const std::string &value)
 
void loadServiceConfig (const std::string &config_name)
 
virtual void clear (void)
 clears all the web services that are currently configured
 
- Public Member Functions inherited from pion::net::HTTPServer
virtual ~HTTPServer ()
 default destructor
 
 HTTPServer (const unsigned int tcp_port=0)
 
 HTTPServer (const boost::asio::ip::tcp::endpoint &endpoint)
 
 HTTPServer (PionScheduler &scheduler, const unsigned int tcp_port=0)
 
 HTTPServer (PionScheduler &scheduler, const boost::asio::ip::tcp::endpoint &endpoint)
 
void addResource (const std::string &resource, RequestHandler request_handler)
 
void removeResource (const std::string &resource)
 
void addRedirect (const std::string &requested_resource, const std::string &new_resource)
 
void setBadRequestHandler (RequestHandler h)
 sets the function that handles bad HTTP requests
 
void setNotFoundHandler (RequestHandler h)
 sets the function that handles requests which match no other web services
 
void setServerErrorHandler (ServerErrorHandler h)
 sets the function that handles requests which match no other web services
 
void setAuthentication (HTTPAuthPtr auth)
 
void setMaxContentLength (std::size_t n)
 sets the maximum length for HTTP request payload content
 
- Public Member Functions inherited from pion::net::TCPServer
virtual ~TCPServer ()
 default destructor
 
void start (void)
 starts listening for new connections
 
void stop (bool wait_until_finished=false)
 
void join (void)
 the calling thread will sleep until the server has stopped listening for connections
 
void setSSLKeyFile (const std::string &pem_key_file)
 
std::size_t getConnections (void) const
 returns the number of active tcp connections
 
unsigned int getPort (void) const
 returns tcp port number that the server listens for connections on
 
void setPort (unsigned int p)
 sets tcp port number that the server listens for connections on
 
boost::asio::ip::address getAddress (void) const
 returns IP address that the server listens for connections on
 
void setAddress (const boost::asio::ip::address &addr)
 sets IP address that the server listens for connections on
 
const boost::asio::ip::tcp::endpoint & getEndpoint (void) const
 returns tcp endpoint that the server listens for connections on
 
void setEndpoint (const boost::asio::ip::tcp::endpoint &ep)
 sets tcp endpoint that the server listens for connections on
 
bool getSSLFlag (void) const
 returns true if the server uses SSL to encrypt connections
 
void setSSLFlag (bool b=true)
 sets value of SSL flag (true if the server uses SSL to encrypt connections)
 
TCPConnection::SSLContext & getSSLContext (void)
 returns the SSL context for configuration
 
bool isListening (void) const
 returns true if the server is listening for connections
 
void setLogger (PionLogger log_ptr)
 sets the logger to be used
 
PionLogger getLogger (void)
 returns the logger currently in use
 

Protected Member Functions

virtual void beforeStarting (void)
 called before the TCP server starts listening for new connections
 
virtual void afterStopping (void)
 called after the TCP server has stopped listening for new connections
 
- Protected Member Functions inherited from pion::net::HTTPServer
virtual void handleConnection (TCPConnectionPtr &tcp_conn)
 
virtual void handleRequest (HTTPRequestPtr &http_request, TCPConnectionPtr &tcp_conn, const boost::system::error_code &ec)
 
virtual bool findRequestHandler (const std::string &resource, RequestHandler &request_handler) const
 
- Protected Member Functions inherited from pion::net::TCPServer
 TCPServer (const unsigned int tcp_port)
 
 TCPServer (const boost::asio::ip::tcp::endpoint &endpoint)
 
 TCPServer (PionScheduler &scheduler, const unsigned int tcp_port=0)
 
 TCPServer (PionScheduler &scheduler, const boost::asio::ip::tcp::endpoint &endpoint)
 
boost::asio::io_service & getIOService (void)
 returns an async I/O service used to schedule work
 

Additional Inherited Members

- Public Types inherited from pion::net::HTTPServer
typedef boost::function2< void, HTTPRequestPtr &, TCPConnectionPtr & > RequestHandler
 type of function that is used to handle requests
 
typedef boost::function3< void, HTTPRequestPtr &, TCPConnectionPtr &, const std::string & > ServerErrorHandler
 handler for requests that result in "500 Server Error"
 
- Static Public Member Functions inherited from pion::net::HTTPServer
static std::string stripTrailingSlash (const std::string &str)
 
static void handleBadRequest (HTTPRequestPtr &http_request, TCPConnectionPtr &tcp_conn)
 
static void handleNotFoundRequest (HTTPRequestPtr &http_request, TCPConnectionPtr &tcp_conn)
 
static void handleServerError (HTTPRequestPtr &http_request, TCPConnectionPtr &tcp_conn, const std::string &error_msg)
 
static void handleForbiddenRequest (HTTPRequestPtr &http_request, TCPConnectionPtr &tcp_conn, const std::string &error_msg)
 
static void handleMethodNotAllowed (HTTPRequestPtr &http_request, TCPConnectionPtr &tcp_conn, const std::string &allowed_methods="")
 
- Protected Attributes inherited from pion::net::TCPServer
PionLogger m_logger
 primary logging interface used by this class
 

Detailed Description

WebServer: a server that handles HTTP connections using WebService plug-ins

Definition at line 31 of file WebServer.hpp.

Constructor & Destructor Documentation

pion::net::WebServer::WebServer ( const unsigned int  tcp_port = 0)
inlineexplicit

creates a new WebServer object

Parameters
tcp_portport number used to listen for new connections (IPv4)

Definition at line 83 of file WebServer.hpp.

pion::net::WebServer::WebServer ( const boost::asio::ip::tcp::endpoint &  endpoint)
inlineexplicit

creates a new WebServer object

Parameters
endpointTCP endpoint used to listen for new connections (see ASIO docs)

Definition at line 94 of file WebServer.hpp.

pion::net::WebServer::WebServer ( PionScheduler scheduler,
const unsigned int  tcp_port = 0 
)
inlineexplicit

creates a new WebServer object

Parameters
schedulerthe PionScheduler that will be used to manage worker threads
tcp_portport number used to listen for new connections (IPv4)

Definition at line 106 of file WebServer.hpp.

pion::net::WebServer::WebServer ( PionScheduler scheduler,
const boost::asio::ip::tcp::endpoint &  endpoint 
)
inline

creates a new WebServer object

Parameters
schedulerthe PionScheduler that will be used to manage worker threads
endpointTCP endpoint used to listen for new connections (see ASIO docs)

Definition at line 118 of file WebServer.hpp.

Member Function Documentation

void pion::net::WebServer::addService ( const std::string &  resource,
WebService service_ptr 
)

adds a new web service to the web server

Parameters
resourcethe resource name or uri-stem to bind to the web service
service_ptra pointer to the web service

Definition at line 25 of file WebServer.cpp.

References pion::PluginManager< PLUGIN_TYPE >::add(), pion::net::HTTPServer::addResource(), pion::net::TCPServer::m_logger, pion::net::WebService::setResource(), and pion::net::HTTPServer::stripTrailingSlash().

void pion::net::WebServer::loadService ( const std::string &  resource,
const std::string &  service_name 
)

loads a web service from a shared object file

Parameters
resourcethe resource name or uri-stem to bind to the web service
service_namethe name of the web service to load (searches plug-in directories and appends extensions)

Definition at line 41 of file WebServer.cpp.

References pion::net::HTTPServer::addResource(), pion::PluginManager< PLUGIN_TYPE >::load(), pion::net::TCPServer::m_logger, pion::net::WebService::setResource(), and pion::net::HTTPServer::stripTrailingSlash().

Referenced by loadServiceConfig().

void pion::net::WebServer::loadServiceConfig ( const std::string &  config_name)

Parses a simple web service configuration file. Each line in the file starts with one of the following commands:

path VALUE : adds a directory to the web service search path service RESOURCE FILE : loads web service bound to RESOURCE from FILE option RESOURCE NAME=VALUE : sets web service option NAME to VALUE

Blank lines or lines that begin with # are ignored as comments.

Parameters
config_namethe name of the config file to parse

Definition at line 74 of file WebServer.cpp.

References pion::PionPlugin::addPluginDirectory(), pion::PionPlugin::findConfigFile(), loadService(), pion::net::TCPServer::m_logger, pion::net::HTTPServer::setAuthentication(), and setServiceOption().

void pion::net::WebServer::setServiceOption ( const std::string &  resource,
const std::string &  name,
const std::string &  value 
)

sets a configuration option for the web service associated with resource

Parameters
resourcethe resource name or uri-stem that identifies the web service
namethe name of the configuration option
valuethe value to set the option to

Definition at line 57 of file WebServer.cpp.

References pion::net::TCPServer::m_logger, pion::PluginManager< PLUGIN_TYPE >::run(), pion::net::WebService::setOption(), and pion::net::HTTPServer::stripTrailingSlash().

Referenced by loadServiceConfig().


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