RDFS
The Rice Comp413 2017 class' continuation on the work of the 2016 RDFS.
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Pages
Classes | Public Member Functions | Public Attributes | Protected Member Functions | Protected Attributes | List of all members
SimpleWeb::ServerBase< socket_type > Class Template Referenceabstract
Inheritance diagram for SimpleWeb::ServerBase< socket_type >:
SimpleWeb::Server< socket_type >

Classes

class  Config
 
class  Connection
 
class  Content
 
class  Request
 
class  Response
 
class  Session
 

Public Member Functions

virtual void start ()
 
void stop () noexcept
 Stop accepting new requests, and close current connections.
 

Public Attributes

Config config
 Set before calling start().
 
std::map< regex_orderable,
std::map< std::string,
std::function< void(std::shared_ptr
< typename ServerBase
< socket_type >::Response >
, std::shared_ptr< typename
ServerBase< socket_type >
::Request >)> > > 
resource
 Warning: do not add or remove resources after start() is called.
 
std::map< std::string,
std::function< void(std::shared_ptr
< typename ServerBase
< socket_type >::Response >
, std::shared_ptr< typename
ServerBase< socket_type >
::Request >)> > 
default_resource
 
std::function< void(std::shared_ptr
< typename ServerBase
< socket_type >::Request >
, const error_code &)> 
on_error
 
std::function< void(std::unique_ptr
< socket_type >
&, std::shared_ptr< typename
ServerBase< socket_type >
::Request >)> 
on_upgrade
 
std::shared_ptr< asio::io_service > io_service
 If you have your own asio::io_service, store its pointer here before running start().
 

Protected Member Functions

 ServerBase (unsigned short port) noexcept
 
virtual void accept ()=0
 
template<typename... Args>
std::shared_ptr< Connectioncreate_connection (Args &&...args) noexcept
 
void read_request_and_content (const std::shared_ptr< Session > &session)
 
void find_resource (const std::shared_ptr< Session > &session)
 
void write_response (const std::shared_ptr< Session > &session, std::function< void(std::shared_ptr< typename ServerBase< socket_type >::Response >, std::shared_ptr< typename ServerBase< socket_type >::Request >)> &resource_function)
 

Protected Attributes

bool internal_io_service = false
 
std::unique_ptr
< asio::ip::tcp::acceptor > 
acceptor
 
std::vector< std::thread > threads
 
std::shared_ptr
< std::unordered_set
< Connection * > > 
connections
 
std::shared_ptr< std::mutex > connections_mutex
 
std::shared_ptr< ScopeRunnerhandler_runner
 

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