RESTinio
Public Member Functions | Private Member Functions | Private Attributes | Friends | List of all members
restinio::generic_request_t< Extra_Data > Class Template Reference

HTTP Request data. More...

#include <request_handler.hpp>

Inheritance diagram for restinio::generic_request_t< Extra_Data >:

Public Member Functions

template<typename Extra_Data_Factory >
 generic_request_t (request_id_t request_id, http_request_header_t header, std::string body, impl::connection_handle_t connection, endpoint_t remote_endpoint, Extra_Data_Factory &extra_data_factory)
 Old-format initializing constructor. More...
 
template<typename Extra_Data_Factory >
 generic_request_t (request_id_t request_id, http_request_header_t header, std::string body, chunked_input_info_unique_ptr_t chunked_input_info, impl::connection_handle_t connection, endpoint_t remote_endpoint, Extra_Data_Factory &extra_data_factory)
 New-format initializing constructor. More...
 
const http_request_header_theader () const noexcept
 Get request header. More...
 
const std::string & body () const noexcept
 Get request body. More...
 
template<typename Output = restinio_controlled_output_t>
auto create_response (http_status_line_t status_line=status_ok())
 
auto request_id () const noexcept
 Get request id. More...
 
connection_id_t connection_id () const noexcept
 Get connection id. More...
 
const endpoint_tremote_endpoint () const noexcept
 Get the remote endpoint of the underlying connection. More...
 
nullable_pointer_t< const chunked_input_info_tchunked_input_info () const noexcept
 Get optional info about chunked input. More...
 
RESTINIO_NODISCARD Extra_Data & extra_data () noexcept
 Get writeable access to extra-data object incorporated into a request object. More...
 
RESTINIO_NODISCARD const Extra_Data & extra_data () const noexcept
 Get readonly access to extra-data object incorporated into a request object. More...
 

Private Member Functions

void check_connection ()
 

Private Attributes

const request_id_t m_request_id
 
const http_request_header_t m_header
 
const std::string m_body
 
const chunked_input_info_unique_ptr_t m_chunked_input_info
 Optional description for chunked-encoding. More...
 
impl::connection_handle_t m_connection
 
const connection_id_t m_connection_id
 
const endpoint_t m_remote_endpoint
 Remote endpoint for underlying connection. More...
 
impl::generic_request_extra_data_holder_t< Extra_Data > m_extra_data_holder
 An instance of extra-data that is incorporated into a request object. More...
 

Friends

template<typename UD >
impl::connection_handle_timpl::access_req_connection (generic_request_t< UD > &) noexcept
 

Detailed Description

template<typename Extra_Data>
class restinio::generic_request_t< Extra_Data >

HTTP Request data.

Provides acces to header and body, and creates response builder for a given request.

Template Parameters
Extra_DataThe type of extra-data to be incorporated into a request object.

Definition at line 199 of file request_handler.hpp.

Constructor & Destructor Documentation

◆ generic_request_t() [1/2]

template<typename Extra_Data >
template<typename Extra_Data_Factory >
restinio::generic_request_t< Extra_Data >::generic_request_t ( request_id_t  request_id,
http_request_header_t  header,
std::string  body,
impl::connection_handle_t  connection,
endpoint_t  remote_endpoint,
Extra_Data_Factory &  extra_data_factory 
)
inline

Old-format initializing constructor.

Can be used in cases where chunked_input_info_t is not available (or needed).

Definition at line 213 of file request_handler.hpp.

◆ generic_request_t() [2/2]

template<typename Extra_Data >
template<typename Extra_Data_Factory >
restinio::generic_request_t< Extra_Data >::generic_request_t ( request_id_t  request_id,
http_request_header_t  header,
std::string  body,
chunked_input_info_unique_ptr_t  chunked_input_info,
impl::connection_handle_t  connection,
endpoint_t  remote_endpoint,
Extra_Data_Factory &  extra_data_factory 
)
inline

New-format initializing constructor.

Since
v.0.6.9

Definition at line 236 of file request_handler.hpp.

Member Function Documentation

◆ body()

template<typename Extra_Data >
const std::string & restinio::generic_request_t< Extra_Data >::body ( ) const
inlinenoexcept

Get request body.

Definition at line 263 of file request_handler.hpp.

◆ check_connection()

template<typename Extra_Data >
void restinio::generic_request_t< Extra_Data >::check_connection ( )
inlineprivate

Definition at line 394 of file request_handler.hpp.

◆ chunked_input_info()

template<typename Extra_Data >
nullable_pointer_t< const chunked_input_info_t > restinio::generic_request_t< Extra_Data >::chunked_input_info ( ) const
inlinenoexcept

Get optional info about chunked input.

Note
nullptr will be returned if chunked-encoding wasn't used in the incoming request.
Since
v.0.6.9

Definition at line 299 of file request_handler.hpp.

◆ connection_id()

template<typename Extra_Data >
connection_id_t restinio::generic_request_t< Extra_Data >::connection_id ( ) const
inlinenoexcept

Get connection id.

Definition at line 285 of file request_handler.hpp.

◆ create_response()

template<typename Extra_Data >
template<typename Output = restinio_controlled_output_t>
auto restinio::generic_request_t< Extra_Data >::create_response ( http_status_line_t  status_line = status_ok())
inline

Definition at line 270 of file request_handler.hpp.

◆ extra_data() [1/2]

template<typename Extra_Data >
RESTINIO_NODISCARD const Extra_Data & restinio::generic_request_t< Extra_Data >::extra_data ( ) const
inlinenoexcept

Get readonly access to extra-data object incorporated into a request object.

Note
This method is present always but it has the sense only if Extra_Data is not no_extra_data_factory_t::data_t.

Usage example:

struct my_extra_data_factory {
struct data_t {
user_identity user_id_;
...
};
void make_within(restinio::extra_data_buffer_t<data_t> buf) {
new(buf.get()) data_t{};
}
};
struct my_traits : public restinio::default_traits_t {
using extra_data_factory_t = my_extra_data_factory;
};
const auto & ud = req->extra_data();
if(ud.user_id_.valid()) {
...
}
else {
...
}
}
Helper for holding a pointer to a buffer where a new object of type Extra_Data should be constructed.
RESTINIO_NODISCARD void * get() const noexcept
std::shared_ptr< generic_request_t< Extra_Data > > generic_request_handle_t
An alias for shared-pointer to incoming request.
request_handling_status_t
Request handling status.
Since
v.0.6.13

Definition at line 387 of file request_handler.hpp.

◆ extra_data() [2/2]

template<typename Extra_Data >
RESTINIO_NODISCARD Extra_Data & restinio::generic_request_t< Extra_Data >::extra_data ( )
inlinenoexcept

Get writeable access to extra-data object incorporated into a request object.

Note
This method is present always but it has the sense only if Extra_Data is not no_extra_data_factory_t::data_t.

Usage example:

struct my_extra_data_factory {
struct data_t {
user_identity user_id_;
...
};
void make_within(restinio::extra_data_buffer_t<data_t> buf) {
new(buf.get()) data_t{};
}
};
struct my_traits : public restinio::default_traits_t {
using extra_data_factory_t = my_extra_data_factory;
};
auto & ud = req->extra_data();
...
ud.user_id_ = some_calculated_user_id;
}
Since
v.0.6.13

Definition at line 341 of file request_handler.hpp.

◆ header()

template<typename Extra_Data >
const http_request_header_t & restinio::generic_request_t< Extra_Data >::header ( ) const
inlinenoexcept

Get request header.

Definition at line 256 of file request_handler.hpp.

◆ remote_endpoint()

template<typename Extra_Data >
const endpoint_t & restinio::generic_request_t< Extra_Data >::remote_endpoint ( ) const
inlinenoexcept

Get the remote endpoint of the underlying connection.

Definition at line 288 of file request_handler.hpp.

◆ request_id()

template<typename Extra_Data >
auto restinio::generic_request_t< Extra_Data >::request_id ( ) const
inlinenoexcept

Get request id.

Definition at line 282 of file request_handler.hpp.

Friends And Related Function Documentation

◆ impl::access_req_connection

template<typename Extra_Data >
template<typename UD >
impl::connection_handle_t & impl::access_req_connection ( generic_request_t< UD > &  )
friend

Member Data Documentation

◆ m_body

template<typename Extra_Data >
const std::string restinio::generic_request_t< Extra_Data >::m_body
private

Definition at line 404 of file request_handler.hpp.

◆ m_chunked_input_info

template<typename Extra_Data >
const chunked_input_info_unique_ptr_t restinio::generic_request_t< Extra_Data >::m_chunked_input_info
private

Optional description for chunked-encoding.

It is present only if chunked-encoded body is found in the incoming request.

Since
v.0.6.9

Definition at line 413 of file request_handler.hpp.

◆ m_connection

template<typename Extra_Data >
impl::connection_handle_t restinio::generic_request_t< Extra_Data >::m_connection
private

Definition at line 415 of file request_handler.hpp.

◆ m_connection_id

template<typename Extra_Data >
const connection_id_t restinio::generic_request_t< Extra_Data >::m_connection_id
private

Definition at line 416 of file request_handler.hpp.

◆ m_extra_data_holder

template<typename Extra_Data >
impl::generic_request_extra_data_holder_t< Extra_Data > restinio::generic_request_t< Extra_Data >::m_extra_data_holder
private

An instance of extra-data that is incorporated into a request object.

Since
v.0.6.13

Definition at line 427 of file request_handler.hpp.

◆ m_header

template<typename Extra_Data >
const http_request_header_t restinio::generic_request_t< Extra_Data >::m_header
private

Definition at line 403 of file request_handler.hpp.

◆ m_remote_endpoint

template<typename Extra_Data >
const endpoint_t restinio::generic_request_t< Extra_Data >::m_remote_endpoint
private

Remote endpoint for underlying connection.

Definition at line 419 of file request_handler.hpp.

◆ m_request_id

template<typename Extra_Data >
const request_id_t restinio::generic_request_t< Extra_Data >::m_request_id
private

Definition at line 402 of file request_handler.hpp.


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