26 #include "../../protocol/handler.h"
27 #include "../../static_function.h"
28 #include "../contiguous_tree/request_adapter.h"
29 #include "../function_view.h"
66 std::variant< key_type, child_id >
key;
79 std::variant< key_type, child_id >
chid;
167 template <
typename Processor >
177 : proc{ .reply = {}, .req = req }
196 template <
typename PromiseType >
197 void await_suspend( std::coroutine_handle< PromiseType > );
199 decltype(
auto ) await_resume()
205 template <
typename T >
215 auto const*
const val_ptr = std::get_if< param_value_reply >( &var );
216 if ( val_ptr ==
nullptr )
221 return opt_res.has_value();
225 template <
typename T >
239 auto const*
const val_ptr = std::get_if< param_value_reply >( &var );
240 if ( val_ptr ==
nullptr )
242 reply = val_ptr->value;
249 template <
typename T >
259 auto const*
const val_ptr = std::get_if< param_value_key_reply >( &var );
260 if ( val_ptr ==
nullptr )
265 return opt_res.has_value();
269 template <
typename T >
348 template <
typename T >
354 template <
typename T >
361 template <
typename T >
390 template <
typename T >
398 template <
typename T >
407 template <
typename Processor >
408 template <
typename PromiseType >
411 h.promise().iface =
this;
413 if ( !proc.set_value( var ) ) {
415 std::ignore = params.send(
416 param_error{ string_buffer(
"failed to proces param awaiter" ) } );
417 proc.log_error( params );
418 state = coro_state::ERRORED;
420 state = coro_state::DONE;
Protocol library has custom type that represents message, however this is just simple overaly over st...
Definition: message.h:40
Definition: parameters.h:426
parameters_server(protocol::channel_type const chann, data_tree tree, params_server_transmit_callback send_cb)
outcome on_msg(std::span< std::byte const > const data)
outcome on_msg(params_client_server_variant const &req)
protocol::channel_type get_channel() const
Definition: parameters.h:433
Definition: parameters.h:334
void exchange(params_client_server_variant const &req, params_reply_callback reply_cb)
param_child_awaiter get_child(node_id nid, key_type const &key)
protocol::channel_type get_channel() const
Definition: parameters.h:338
outcome on_msg(params_server_client_variant const &req)
outcome on_msg(std::span< std::byte const > data)
param_type_awaiter get_type(node_id nid)
param_key_awaiter get_key(node_id nid, child_id chid)
param_child_awaiter get_child(node_id nid, child_id chid)
param_variant_awaiter get_value_variant(node_id const node)
Definition: parameters.h:368
result send(params_client_server_variant const &val)
param_value_awaiter< T > get_value(node_id const node)
Definition: parameters.h:349
parameters(protocol::channel_type chann, params_client_transmit_callback send_cb)
param_value_key_awaiter< T > get_value(node_id const node, key_type const &k)
Definition: parameters.h:362
param_child_count_awaiter get_child_count(node_id const nid)
param_value_key_awaiter< T > get_value(node_id const node, child_id const chid)
Definition: parameters.h:355
uint16_t channel_type
Definition: multiplexer.h:35
decltype(traits_for_impl< D >()) traits_for
Definition: traits.h:59
MIT License.
Definition: base.h:37
uint32_t node_id
Definition: base.h:42
typename protocol::traits_for< params_server_client_group >::value_type params_server_client_variant
Definition: parameters.h:155
coro_state
Definition: coroutine.h:36
typename protocol::traits_for< params_client_server_group >::value_type params_client_server_variant
Definition: parameters.h:141
string_buffer< 128 > string_buffer
Definition: base.h:46
typename protocol::handler< params_server_client_group >::message_type params_server_client_message
Definition: parameters.h:157
std::variant< int64_t, float, bool, string_buffer > value_type
Definition: base.h:51
typename protocol::handler< params_client_server_group >::message_type params_client_server_message
Definition: parameters.h:143
uint32_t child_count
Definition: base.h:43
params_enum
Definition: parameters.h:40
@ PARAM_TYPE
Definition: parameters.h:45
@ PARAM_KEY
Definition: parameters.h:44
@ PARAM_VALUE
Definition: parameters.h:41
@ PARAM_CHILD
Definition: parameters.h:42
@ PARAM_CHILD_COUNT
Definition: parameters.h:43
@ PARAM_VALUE_KEY
Definition: parameters.h:46
@ PARAM_ERROR
Definition: parameters.h:47
static constexpr protocol::channel_type params_channel
Definition: parameters.h:37
uint32_t child_id
Definition: base.h:44
constexpr pointer data() noexcept
Returns pointer to first item of the storage.
Definition: static_storage.h:108
contiguous_request_adapter_errors
Definition: base.h:46
contiguous_tree_type
Definition: base.h:33
Definition: static_function.h:109
outcome represents tristate resut of some operation, which can succeed, fail or produce an error.
Definition: outcome.h:49
result represents an result of some operation, as an alternative to returning just bool with true/fal...
Definition: result.h:42
Definition: parameters.h:304
param_child_count_request req
Definition: parameters.h:306
bool set_value(params_server_client_variant const &var)
child_count reply
Definition: parameters.h:305
void log_error(parameters const &) const
Definition: parameters.h:308
Definition: parameters.h:95
child_count count
Definition: parameters.h:97
Definition: parameters.h:89
node_id parent
Definition: parameters.h:91
Definition: parameters.h:289
node_id reply
Definition: parameters.h:290
bool set_value(params_server_client_variant const &var)
void log_error(parameters const &) const
Definition: parameters.h:293
param_child_request req
Definition: parameters.h:291
Definition: parameters.h:83
node_id chid
Definition: parameters.h:85
Definition: parameters.h:76
std::variant< key_type, child_id > chid
Definition: parameters.h:79
node_id parent
Definition: parameters.h:78
Definition: parameters.h:126
string_buffer error
Definition: parameters.h:128
Definition: parameters.h:319
param_key_request req
Definition: parameters.h:321
void log_error(parameters const &) const
Definition: parameters.h:323
bool set_value(params_server_client_variant const &var)
key_type reply
Definition: parameters.h:320
Definition: parameters.h:108
key_type key
Definition: parameters.h:110
Definition: parameters.h:101
child_id chid
Definition: parameters.h:104
node_id nid
Definition: parameters.h:103
Definition: parameters.h:273
bool set_value(params_server_client_variant const &var)
void log_error(parameters const &) const
Definition: parameters.h:278
node_type_enum reply
Definition: parameters.h:274
param_type_request req
Definition: parameters.h:275
Definition: parameters.h:120
node_type_enum type
Definition: parameters.h:122
Definition: parameters.h:114
node_id nid
Definition: parameters.h:116
Definition: parameters.h:251
T reply
Definition: parameters.h:252
param_value_key_request req
Definition: parameters.h:253
bool set_value(params_server_client_variant const &var)
Definition: parameters.h:257
Definition: parameters.h:70
value_type value
Definition: parameters.h:72
Definition: parameters.h:63
node_id nid
Definition: parameters.h:65
std::variant< key_type, child_id > key
Definition: parameters.h:66
Definition: parameters.h:207
bool set_value(params_server_client_variant const &var)
Definition: parameters.h:213
param_value_request req
Definition: parameters.h:209
T reply
Definition: parameters.h:208
Definition: parameters.h:57
value_type value
Definition: parameters.h:59
Definition: parameters.h:51
node_id nid
Definition: parameters.h:53
Definition: parameters.h:229
void log_error(parameters &) const
Definition: parameters.h:233
param_value_request req
Definition: parameters.h:231
value_type reply
Definition: parameters.h:230
bool set_value(params_server_client_variant const &var)
Definition: parameters.h:237
Definition: parameters.h:169
params_awaiter(request_type req, parameters ¶ms)
Definition: parameters.h:176
Processor proc
Definition: parameters.h:170
parameters & params
Definition: parameters.h:172
coro_state get_state() const override
Definition: parameters.h:182
decltype(proc.req) request_type
Definition: parameters.h:174
bool await_ready() const
Definition: parameters.h:191
void tick() override
Definition: parameters.h:187
Definition: protocol.h:100
Definition: coroutine.h:45