Kagome
Polkadot Runtime Engine in C++17
kagome::api::details::RequestType< ResultType, ArgumentTypes > Struct Template Referenceabstract

#include <base_request.hpp>

Inheritance diagram for kagome::api::details::RequestType< ResultType, ArgumentTypes >:
Collaboration diagram for kagome::api::details::RequestType< ResultType, ArgumentTypes >:

Public Types

using Params = std::tuple< ArgumentTypes... >
 
using Return = ResultType
 

Public Member Functions

 RequestType ()=default
 
virtual ~RequestType ()=default
 
virtual outcome::result< ResultType > execute ()=0
 
 RequestType (const RequestType &)=delete
 
RequestTypeoperator= (const RequestType &)=delete
 
 RequestType (RequestType &&)=delete
 
RequestTypeoperator= (RequestType &&)=delete
 
outcome::result< void > init (const jsonrpc::Request::Parameters &params)
 
template<size_t I>
auto getParam () -> typename std::tuple_element< I, decltype(params_)>::type &
 

Private Member Functions

template<typename T >
void loadValue (std::optional< T > &dst, const jsonrpc::Value &src)
 
template<typename SequenceContainer , typename = typename SequenceContainer::value_type, typename = typename SequenceContainer::iterator>
void loadValue (SequenceContainer &dst, const jsonrpc::Value &src)
 
template<typename T >
std::enable_if_t< std::is_integral_v< T >, void > loadValue (T &dst, const jsonrpc::Value &src)
 
void loadValue (bool &dst, const jsonrpc::Value &src)
 
void loadValue (std::string &dst, const jsonrpc::Value &src)
 

Private Attributes

Params params_
 

Detailed Description

template<typename ResultType, typename... ArgumentTypes>
struct kagome::api::details::RequestType< ResultType, ArgumentTypes >

Base for all request classes. Automatically parses request arguments to

Template Parameters
ArgumentTypes.They can be accessed in execute() via getParam<N>().

Definition at line 32 of file base_request.hpp.

Member Typedef Documentation

template<typename ResultType, typename... ArgumentTypes>
using kagome::api::details::RequestType< ResultType, ArgumentTypes >::Params = std::tuple<ArgumentTypes...>

Definition at line 34 of file base_request.hpp.

template<typename ResultType, typename... ArgumentTypes>
using kagome::api::details::RequestType< ResultType, ArgumentTypes >::Return = ResultType

Definition at line 35 of file base_request.hpp.

Constructor & Destructor Documentation

template<typename ResultType, typename... ArgumentTypes>
kagome::api::details::RequestType< ResultType, ArgumentTypes >::RequestType ( )
default
template<typename ResultType, typename... ArgumentTypes>
virtual kagome::api::details::RequestType< ResultType, ArgumentTypes >::~RequestType ( )
virtualdefault
template<typename ResultType, typename... ArgumentTypes>
kagome::api::details::RequestType< ResultType, ArgumentTypes >::RequestType ( const RequestType< ResultType, ArgumentTypes > &  )
delete
template<typename ResultType, typename... ArgumentTypes>
kagome::api::details::RequestType< ResultType, ArgumentTypes >::RequestType ( RequestType< ResultType, ArgumentTypes > &&  )
delete

Member Function Documentation

template<typename ResultType, typename... ArgumentTypes>
template<size_t I>
auto kagome::api::details::RequestType< ResultType, ArgumentTypes >::getParam ( ) -> typename std::tuple_element<I, decltype(params_)>::type &
inline

Definition at line 65 of file base_request.hpp.

template<typename ResultType, typename... ArgumentTypes>
outcome::result<void> kagome::api::details::RequestType< ResultType, ArgumentTypes >::init ( const jsonrpc::Request::Parameters &  params)
inline

Definition at line 52 of file base_request.hpp.

template<typename ResultType, typename... ArgumentTypes>
template<typename T >
void kagome::api::details::RequestType< ResultType, ArgumentTypes >::loadValue ( std::optional< T > &  dst,
const jsonrpc::Value &  src 
)
inlineprivate

Definition at line 74 of file base_request.hpp.

template<typename ResultType, typename... ArgumentTypes>
template<typename SequenceContainer , typename = typename SequenceContainer::value_type, typename = typename SequenceContainer::iterator>
void kagome::api::details::RequestType< ResultType, ArgumentTypes >::loadValue ( SequenceContainer &  dst,
const jsonrpc::Value &  src 
)
inlineprivate

Definition at line 87 of file base_request.hpp.

template<typename ResultType, typename... ArgumentTypes>
template<typename T >
std::enable_if_t<std::is_integral_v<T>, void> kagome::api::details::RequestType< ResultType, ArgumentTypes >::loadValue ( T &  dst,
const jsonrpc::Value &  src 
)
inlineprivate

Definition at line 100 of file base_request.hpp.

template<typename ResultType, typename... ArgumentTypes>
void kagome::api::details::RequestType< ResultType, ArgumentTypes >::loadValue ( bool &  dst,
const jsonrpc::Value &  src 
)
inlineprivate

Definition at line 120 of file base_request.hpp.

template<typename ResultType, typename... ArgumentTypes>
void kagome::api::details::RequestType< ResultType, ArgumentTypes >::loadValue ( std::string &  dst,
const jsonrpc::Value &  src 
)
inlineprivate

Definition at line 127 of file base_request.hpp.

template<typename ResultType, typename... ArgumentTypes>
RequestType& kagome::api::details::RequestType< ResultType, ArgumentTypes >::operator= ( const RequestType< ResultType, ArgumentTypes > &  )
delete
template<typename ResultType, typename... ArgumentTypes>
RequestType& kagome::api::details::RequestType< ResultType, ArgumentTypes >::operator= ( RequestType< ResultType, ArgumentTypes > &&  )
delete

Member Data Documentation

template<typename ResultType, typename... ArgumentTypes>
Params kagome::api::details::RequestType< ResultType, ArgumentTypes >::params_
private

Definition at line 38 of file base_request.hpp.


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