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::ClientBase< socket_type > Class Template Referenceabstract
Inheritance diagram for SimpleWeb::ClientBase< socket_type >:
SimpleWeb::Client< socket_type >

Classes

class  Config
 
class  Connection
 
class  Content
 
class  Response
 
class  Session
 

Public Member Functions

std::shared_ptr< Responserequest (const std::string &method, const std::string &path=std::string("/"), string_view content="", const CaseInsensitiveMultimap &header=CaseInsensitiveMultimap())
 
std::shared_ptr< Responserequest (const std::string &method, const std::string &path, std::istream &content, const CaseInsensitiveMultimap &header=CaseInsensitiveMultimap())
 
void request (const std::string &method, const std::string &path, string_view content, const CaseInsensitiveMultimap &header, std::function< void(std::shared_ptr< Response >, const error_code &)> &&request_callback_)
 
void request (const std::string &method, const std::string &path, string_view content, std::function< void(std::shared_ptr< Response >, const error_code &)> &&request_callback)
 
void request (const std::string &method, const std::string &path, std::function< void(std::shared_ptr< Response >, const error_code &)> &&request_callback)
 Asynchronous request where setting and/or running Client's io_service is required.
 
void request (const std::string &method, std::function< void(std::shared_ptr< Response >, const error_code &)> &&request_callback)
 Asynchronous request where setting and/or running Client's io_service is required.
 
void request (const std::string &method, const std::string &path, std::istream &content, const CaseInsensitiveMultimap &header, std::function< void(std::shared_ptr< Response >, const error_code &)> &&request_callback_)
 Asynchronous request where setting and/or running Client's io_service is required.
 
void request (const std::string &method, const std::string &path, std::istream &content, std::function< void(std::shared_ptr< Response >, const error_code &)> &&request_callback)
 Asynchronous request where setting and/or running Client's io_service is required.
 
void stop () noexcept
 Close connections.
 

Public Attributes

Config config
 Set before calling request.
 
std::shared_ptr< asio::io_service > io_service
 

Protected Member Functions

 ClientBase (const std::string &host_port, unsigned short default_port) noexcept
 
std::shared_ptr< Connectionget_connection () noexcept
 
virtual std::shared_ptr
< Connection
create_connection () noexcept=0
 
virtual void connect (const std::shared_ptr< Session > &)=0
 
std::unique_ptr< asio::streambuf > create_request_header (const std::string &method, const std::string &path, const CaseInsensitiveMultimap &header) const
 
std::pair< std::string,
unsigned short > 
parse_host_port (const std::string &host_port, unsigned short default_port) const noexcept
 
void write (const std::shared_ptr< Session > &session)
 
void read (const std::shared_ptr< Session > &session)
 
void read_chunked (const std::shared_ptr< Session > &session, const std::shared_ptr< asio::streambuf > &tmp_streambuf)
 

Protected Attributes

bool internal_io_service = false
 
std::string host
 
unsigned short port
 
std::unique_ptr
< asio::ip::tcp::resolver::query > 
query
 
std::unordered_set
< std::shared_ptr< Connection > > 
connections
 
std::mutex connections_mutex
 
std::shared_ptr< ScopeRunnerhandler_runner
 
std::size_t concurrent_synchronous_requests = 0
 
std::mutex concurrent_synchronous_requests_mutex
 

Member Function Documentation

template<class socket_type>
std::shared_ptr<Response> SimpleWeb::ClientBase< socket_type >::request ( const std::string &  method,
const std::string &  path = std::string("/"),
string_view  content = "",
const CaseInsensitiveMultimap &  header = CaseInsensitiveMultimap() 
)
inline

Convenience function to perform synchronous request. The io_service is run within this function. If reusing the io_service for other tasks, use the asynchronous request functions instead. Do not use concurrently with the asynchronous request functions.

template<class socket_type>
std::shared_ptr<Response> SimpleWeb::ClientBase< socket_type >::request ( const std::string &  method,
const std::string &  path,
std::istream &  content,
const CaseInsensitiveMultimap &  header = CaseInsensitiveMultimap() 
)
inline

Convenience function to perform synchronous request. The io_service is run within this function. If reusing the io_service for other tasks, use the asynchronous request functions instead. Do not use concurrently with the asynchronous request functions.

template<class socket_type>
void SimpleWeb::ClientBase< socket_type >::request ( const std::string &  method,
const std::string &  path,
string_view  content,
const CaseInsensitiveMultimap &  header,
std::function< void(std::shared_ptr< Response >, const error_code &)> &&  request_callback_ 
)
inline

Asynchronous request where setting and/or running Client's io_service is required. Do not use concurrently with the synchronous request functions.

template<class socket_type>
void SimpleWeb::ClientBase< socket_type >::request ( const std::string &  method,
const std::string &  path,
string_view  content,
std::function< void(std::shared_ptr< Response >, const error_code &)> &&  request_callback 
)
inline

Asynchronous request where setting and/or running Client's io_service is required. Do not use concurrently with the synchronous request functions.

Member Data Documentation

template<class socket_type>
std::shared_ptr<asio::io_service> SimpleWeb::ClientBase< socket_type >::io_service

If you have your own asio::io_service, store its pointer here before calling request(). When using asynchronous requests, running the io_service is up to the programmer.


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