emlabcpp
modern opinionated embedded C++ library
controller_interface_adapter.h
Go to the documentation of this file.
1 
24 #pragma once
25 
26 #include "../../static_function.h"
27 #include "./controller_interface.h"
28 
29 namespace emlabcpp::testing
30 {
31 
33 {
34  protocol::channel_type channel_;
35  controller_interface& iface_;
36 
37  static_function< bool( reactor_controller_variant const& ), 32 > reply_cb_;
39 
40 public:
42  protocol::channel_type const channel,
43  controller_interface& iface,
45  : channel_( channel )
46  , iface_( iface )
47  , send_cb_( std::move( send_cb ) )
48  {
49  }
50 
52  {
54  auto const msg = h::serialize( var );
55  return send_cb_( channel_, msg );
56  }
57 
59  {
60  return &iface_;
61  }
62 
64  {
65  return iface_;
66  }
67 
68  void set_reply_cb( static_function< bool( reactor_controller_variant const& ), 32 > cb )
69  {
70  reply_cb_ = std::move( cb );
71  }
72 
74  {
75  if ( !reply_cb_ )
76  return false;
77  return reply_cb_( var );
78  }
79 
80  void report_error( error_variant const& var )
81  {
82  iface_.on_error( var );
83  }
84 };
85 
86 } // namespace emlabcpp::testing
Definition: controller_interface_adapter.h:33
controller_interface & operator*()
Definition: controller_interface_adapter.h:63
controller_interface * operator->()
Definition: controller_interface_adapter.h:58
void set_reply_cb(static_function< bool(reactor_controller_variant const &), 32 > cb)
Definition: controller_interface_adapter.h:68
void report_error(error_variant const &var)
Definition: controller_interface_adapter.h:80
result send(controller_reactor_variant const &var)
Definition: controller_interface_adapter.h:51
bool on_msg_with_cb(reactor_controller_variant const &var)
Definition: controller_interface_adapter.h:73
controller_interface_adapter(protocol::channel_type const channel, controller_interface &iface, controller_transmit_callback send_cb)
Definition: controller_interface_adapter.h:41
Definition: controller_interface.h:33
virtual void on_error(error_variant const &)=0
uint16_t channel_type
Definition: multiplexer.h:35
MIT License.
Definition: base.h:37
std::variant< reactor_protocol_error, controller_protocol_error, internal_reactor_error, controller_internal_error > error_variant
Definition: error.h:62
typename protocol::traits_for< controller_reactor_group >::value_type controller_reactor_variant
Definition: protocol.h:133
typename protocol::traits_for< reactor_controller_group >::value_type reactor_controller_variant
Definition: protocol.h:202
Definition: static_function.h:109
handler< T > should be used to execute actual serialization and deserealization of protocol definitio...
Definition: handler.h:39
result represents an result of some operation, as an alternative to returning just bool with true/fal...
Definition: result.h:42