30#error THIS HEADER IS A GENERATOR. DO NOT INCLUDE.
51#ifndef ETL_MESSAGE_ROUTER_INCLUDED
52#define ETL_MESSAGE_ROUTER_INCLUDED
57#include "message_packet.h"
58#include "message_types.h"
79 message_router_exception(string_type reason_, string_type file_name_, numeric_type line_number_)
80 : etl::
exception(reason_, file_name_, line_number_)
92 message_router_illegal_id(string_type file_name_, numeric_type line_number_)
93 : message_router_exception(ETL_ERROR_TEXT(
"message router:illegal id", ETL_MESSAGE_ROUTER_FILE_ID
"A"), file_name_, line_number_)
112 virtual ~imessage_router() {}
113 virtual void receive(
const etl::imessage&) = 0;
115 virtual bool is_null_router()
const = 0;
116 virtual bool is_producer()
const = 0;
117 virtual bool is_consumer()
const = 0;
120 virtual void receive(etl::message_router_id_t destination_router_id,
const etl::imessage& message)
122 if ((destination_router_id == get_message_router_id()) || (destination_router_id == imessage_router::ALL_MESSAGE_ROUTERS))
129 virtual void receive(etl::shared_message shared_msg)
135 virtual void receive(etl::message_router_id_t destination_router_id, etl::shared_message shared_msg)
137 if ((destination_router_id == get_message_router_id()) || (destination_router_id == imessage_router::ALL_MESSAGE_ROUTERS))
144 bool accepts(
const etl::imessage& msg)
const
146 return accepts(msg.get_message_id());
150 etl::message_router_id_t get_message_router_id()
const
152 return message_router_id;
157 NULL_MESSAGE_ROUTER = 255,
159 ALL_MESSAGE_ROUTERS = 253,
160 MESSAGE_BROKER = 252,
161 MESSAGE_ROUTER = 251,
162 MAX_MESSAGE_ROUTER = 249
167 imessage_router(etl::message_router_id_t id_)
168 : message_router_id(id_)
172 imessage_router(etl::message_router_id_t id_, imessage_router& successor_)
174 , message_router_id(id_)
181 imessage_router(
const imessage_router&);
182 imessage_router& operator =(
const imessage_router&);
184 etl::message_router_id_t message_router_id;
195 null_message_router()
196 : imessage_router(imessage_router::NULL_MESSAGE_ROUTER)
201 null_message_router(etl::imessage_router& successor_)
202 : imessage_router(imessage_router::NULL_MESSAGE_ROUTER, successor_)
207 using etl::imessage_router::receive;
209 void receive(
const etl::imessage& msg) ETL_OVERRIDE
218 using etl::imessage_router::accepts;
233 ETL_DEPRECATED
bool is_null_router() const ETL_OVERRIDE
239 bool is_producer() const ETL_OVERRIDE
245 bool is_consumer() const ETL_OVERRIDE
251 static null_message_router& instance()
253 static null_message_router nmr;
262 return etl::null_message_router::instance();
274 : imessage_router(etl::imessage_router::MESSAGE_ROUTER)
279 message_producer(etl::imessage_router& successor_)
280 : imessage_router(imessage_router::NULL_MESSAGE_ROUTER, successor_)
285 message_producer(etl::message_router_id_t id_)
286 : imessage_router(id_)
288 ETL_ASSERT(id_ <= etl::imessage_router::MAX_MESSAGE_ROUTER, ETL_ERROR(etl::message_router_illegal_id));
292 message_producer(etl::message_router_id_t id_, etl::imessage_router& successor_)
293 : imessage_router(id_, successor_)
295 ETL_ASSERT(id_ <= etl::imessage_router::MAX_MESSAGE_ROUTER, ETL_ERROR(etl::message_router_illegal_id));
299 using etl::imessage_router::receive;
301 void receive(
const etl::imessage& msg) ETL_OVERRIDE
310 using etl::imessage_router::accepts;
325 ETL_DEPRECATED
bool is_null_router() const ETL_OVERRIDE
331 bool is_producer() const ETL_OVERRIDE
337 bool is_consumer() const ETL_OVERRIDE
346 template <
typename T>
347 struct is_message_router :
public etl::bool_constant<etl::is_base_of<etl::imessage_router, typename etl::remove_cvref<T>::type>::value>
354 template <
typename TRouter,
typename TMessage>
356 typename etl::enable_if<etl::is_message_router<TRouter>::value && etl::is_message<TMessage>::value,
void>::type
357 send_message(TRouter& destination,
366 template <
typename TRouter>
368 typename etl::enable_if<etl::is_message_router<TRouter>::value,
void>::type
369 send_message(TRouter& destination,
378 template <
typename TRouter,
typename TMessage>
380 typename etl::enable_if<etl::is_message_router<TRouter>::value && etl::is_message<TMessage>::value,
void>::type
381 send_message(TRouter& destination,
382 etl::message_router_id_t
id,
385 destination.receive(
id,
message);
391 template <
typename TRouter>
393 typename etl::enable_if<etl::is_message_router<TRouter>::value,
void>::type
394 send_message(TRouter& destination,
395 etl::message_router_id_t
id,
398 destination.receive(
id,
message);
404#if ETL_USING_CPP17 && !defined(ETL_MESSAGE_ROUTER_FORCE_CPP03_IMPLEMENTATION)
408 template <
typename TDerived,
typename... TMessageTypes>
413 typedef etl::message_packet<TMessageTypes...> message_packet;
417 : imessage_router(etl::imessage_router::MESSAGE_ROUTER)
422 message_router(etl::imessage_router& successor_)
423 : imessage_router(etl::imessage_router::MESSAGE_ROUTER, successor_)
428 message_router(etl::message_router_id_t id_)
429 : imessage_router(id_)
431 ETL_ASSERT(id_ <= etl::imessage_router::MAX_MESSAGE_ROUTER, ETL_ERROR(etl::message_router_illegal_id));
435 message_router(etl::message_router_id_t id_, etl::imessage_router& successor_)
436 : imessage_router(id_, successor_)
438 ETL_ASSERT(id_ <= etl::imessage_router::MAX_MESSAGE_ROUTER, ETL_ERROR(etl::message_router_illegal_id));
442 using etl::imessage_router::receive;
444 void receive(
const etl::imessage& msg) ETL_OVERRIDE
446 const bool was_handled = (receive_message_type<TMessageTypes>(msg) || ...);
456 static_cast<TDerived*
>(
this)->on_receive_unknown(msg);
461 template <typename TMessage, typename etl::enable_if<etl::is_base_of<imessage, TMessage>::value,
int>::type = 0>
462 void receive(
const TMessage& msg)
464 if constexpr (etl::is_one_of<TMessage, TMessageTypes...>::value)
466 static_cast<TDerived*
>(
this)->on_receive(msg);
476 static_cast<TDerived*
>(
this)->on_receive_unknown(msg);
482 using imessage_router::accepts;
486 return (accepts_type<TMessageTypes>(
id) || ...);
490 ETL_DEPRECATED
bool is_null_router() const ETL_OVERRIDE
496 bool is_producer() const ETL_OVERRIDE
502 bool is_consumer() const ETL_OVERRIDE
510 template <
typename TMessage>
511 bool receive_message_type(
const etl::imessage& msg)
513 if (TMessage::ID == msg.get_message_id())
515 static_cast<TDerived*
>(
this)->on_receive(
static_cast<const TMessage&
>(msg));
525 template <
typename TMessage>
528 if (TMessage::ID ==
id)
552 template <
typename TDerived,
553 typename T1,
typename T2 = void,
typename T3 = void,
typename T4 = void,
554 typename T5 = void,
typename T6 = void,
typename T7 = void,
typename T8 = void,
555 typename T9 = void,
typename T10 = void,
typename T11 = void,
typename T12 = void,
556 typename T13 = void,
typename T14 = void,
typename T15 = void,
typename T16 =
void>
557 class message_router :
public imessage_router
561 typedef etl::message_packet<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16> message_packet;
564 message_router(etl::message_router_id_t id_)
565 : imessage_router(id_)
572 : imessage_router(id_, successor_)
579 : imessage_router(etl::imessage_router::MESSAGE_ROUTER)
585 : imessage_router(etl::imessage_router::MESSAGE_ROUTER, successor_)
590 using etl::imessage_router::receive;
598 case T1::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T1&
>(msg));
break;
599 case T2::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T2&
>(msg));
break;
600 case T3::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T3&
>(msg));
break;
601 case T4::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T4&
>(msg));
break;
602 case T5::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T5&
>(msg));
break;
603 case T6::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T6&
>(msg));
break;
604 case T7::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T7&
>(msg));
break;
605 case T8::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T8&
>(msg));
break;
606 case T9::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T9&
>(msg));
break;
607 case T10::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T10&
>(msg));
break;
608 case T11::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T11&
>(msg));
break;
609 case T12::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T12&
>(msg));
break;
610 case T13::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T13&
>(msg));
break;
611 case T14::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T14&
>(msg));
break;
612 case T15::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T15&
>(msg));
break;
613 case T16::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T16&
>(msg));
break;
622 static_cast<TDerived*
>(
this)->on_receive_unknown(msg);
629 template <
typename TMessage>
630 typename etl::enable_if<etl::is_base_of<imessage, TMessage>::value && etl::is_one_of<TMessage, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16>::value,
void>
::type
631 receive(
const TMessage& msg)
633 static_cast<TDerived*
>(
this)->on_receive(msg);
636 template <
typename TMessage>
637 typename etl::enable_if<etl::is_base_of<imessage, TMessage>::value && !etl::is_one_of<TMessage, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16>::value,
void>
::type
638 receive(
const TMessage& msg)
646 static_cast<TDerived*
>(
this)->on_receive_unknown(msg);
651 using imessage_router::accepts;
657 case T1::ID:
case T2::ID:
case T3::ID:
case T4::ID:
case T5::ID:
case T6::ID:
case T7::ID:
case T8::ID:
658 case T9::ID:
case T10::ID:
case T11::ID:
case T12::ID:
case T13::ID:
case T14::ID:
case T15::ID:
case T16::ID:
675 ETL_DEPRECATED
bool is_null_router()
const ETL_OVERRIDE
681 bool is_producer()
const ETL_OVERRIDE
687 bool is_consumer()
const ETL_OVERRIDE
696 template <
typename TDerived,
697 typename T1,
typename T2,
typename T3,
typename T4,
698 typename T5,
typename T6,
typename T7,
typename T8,
699 typename T9,
typename T10,
typename T11,
typename T12,
700 typename T13,
typename T14,
typename T15>
701 class message_router<TDerived, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, void>
702 :
public imessage_router
706 typedef etl::message_packet<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> message_packet;
709 message_router(etl::message_router_id_t id_)
710 : imessage_router(id_)
717 : imessage_router(id_, successor_)
724 : imessage_router(etl::imessage_router::MESSAGE_ROUTER)
730 : imessage_router(etl::imessage_router::MESSAGE_ROUTER, successor_)
735 using etl::imessage_router::receive;
739 const size_t id = msg.get_message_id();
743 case T1::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T1&
>(msg));
break;
744 case T2::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T2&
>(msg));
break;
745 case T3::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T3&
>(msg));
break;
746 case T4::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T4&
>(msg));
break;
747 case T5::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T5&
>(msg));
break;
748 case T6::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T6&
>(msg));
break;
749 case T7::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T7&
>(msg));
break;
750 case T8::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T8&
>(msg));
break;
751 case T9::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T9&
>(msg));
break;
752 case T10::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T10&
>(msg));
break;
753 case T11::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T11&
>(msg));
break;
754 case T12::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T12&
>(msg));
break;
755 case T13::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T13&
>(msg));
break;
756 case T14::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T14&
>(msg));
break;
757 case T15::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T15&
>(msg));
break;
766 static_cast<TDerived*
>(
this)->on_receive_unknown(msg);
773 template <
typename TMessage>
774 typename etl::enable_if<etl::is_base_of<imessage, TMessage>::value && etl::is_one_of<TMessage, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>::value,
void>
::type
775 receive(
const TMessage& msg)
777 static_cast<TDerived*
>(
this)->on_receive(msg);
780 template <
typename TMessage>
781 typename etl::enable_if<etl::is_base_of<imessage, TMessage>::value && !etl::is_one_of<TMessage, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>::value,
void>
::type
782 receive(
const TMessage& msg)
790 static_cast<TDerived*
>(
this)->on_receive_unknown(msg);
796 using imessage_router::accepts;
802 case T1::ID:
case T2::ID:
case T3::ID:
case T4::ID:
case T5::ID:
case T6::ID:
case T7::ID:
case T8::ID:
803 case T9::ID:
case T10::ID:
case T11::ID:
case T12::ID:
case T13::ID:
case T14::ID:
case T15::ID:
820 ETL_DEPRECATED
bool is_null_router()
const ETL_OVERRIDE
826 bool is_producer()
const ETL_OVERRIDE
832 bool is_consumer()
const ETL_OVERRIDE
841 template <
typename TDerived,
842 typename T1,
typename T2,
typename T3,
typename T4,
843 typename T5,
typename T6,
typename T7,
typename T8,
844 typename T9,
typename T10,
typename T11,
typename T12,
845 typename T13,
typename T14>
846 class message_router<TDerived, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, void, void>
847 :
public imessage_router
851 typedef etl::message_packet<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> message_packet;
854 message_router(etl::message_router_id_t id_)
855 : imessage_router(id_)
862 : imessage_router(id_, successor_)
869 : imessage_router(etl::imessage_router::MESSAGE_ROUTER)
875 : imessage_router(etl::imessage_router::MESSAGE_ROUTER, successor_)
880 using etl::imessage_router::receive;
884 const size_t id = msg.get_message_id();
888 case T1::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T1&
>(msg));
break;
889 case T2::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T2&
>(msg));
break;
890 case T3::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T3&
>(msg));
break;
891 case T4::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T4&
>(msg));
break;
892 case T5::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T5&
>(msg));
break;
893 case T6::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T6&
>(msg));
break;
894 case T7::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T7&
>(msg));
break;
895 case T8::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T8&
>(msg));
break;
896 case T9::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T9&
>(msg));
break;
897 case T10::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T10&
>(msg));
break;
898 case T11::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T11&
>(msg));
break;
899 case T12::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T12&
>(msg));
break;
900 case T13::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T13&
>(msg));
break;
901 case T14::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T14&
>(msg));
break;
910 static_cast<TDerived*
>(
this)->on_receive_unknown(msg);
917 template <
typename TMessage>
918 typename etl::enable_if<etl::is_base_of<imessage, TMessage>::value && etl::is_one_of<TMessage, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>::value,
void>
::type
919 receive(
const TMessage& msg)
921 static_cast<TDerived*
>(
this)->on_receive(msg);
924 template <
typename TMessage>
925 typename etl::enable_if<etl::is_base_of<imessage, TMessage>::value && !etl::is_one_of<TMessage, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>::value,
void>
::type
926 receive(
const TMessage& msg)
934 static_cast<TDerived*
>(
this)->on_receive_unknown(msg);
940 using imessage_router::accepts;
946 case T1::ID:
case T2::ID:
case T3::ID:
case T4::ID:
case T5::ID:
case T6::ID:
case T7::ID:
case T8::ID:
947 case T9::ID:
case T10::ID:
case T11::ID:
case T12::ID:
case T13::ID:
case T14::ID:
964 ETL_DEPRECATED
bool is_null_router()
const ETL_OVERRIDE
970 bool is_producer()
const ETL_OVERRIDE
976 bool is_consumer()
const ETL_OVERRIDE
985 template <
typename TDerived,
986 typename T1,
typename T2,
typename T3,
typename T4,
987 typename T5,
typename T6,
typename T7,
typename T8,
988 typename T9,
typename T10,
typename T11,
typename T12,
990 class message_router<TDerived, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, void, void, void>
991 :
public imessage_router
995 typedef etl::message_packet<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> message_packet;
998 message_router(etl::message_router_id_t id_)
999 : imessage_router(id_)
1006 : imessage_router(id_, successor_)
1013 : imessage_router(etl::imessage_router::MESSAGE_ROUTER)
1019 : imessage_router(etl::imessage_router::MESSAGE_ROUTER, successor_)
1024 using etl::imessage_router::receive;
1028 const size_t id = msg.get_message_id();
1032 case T1::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T1&
>(msg));
break;
1033 case T2::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T2&
>(msg));
break;
1034 case T3::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T3&
>(msg));
break;
1035 case T4::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T4&
>(msg));
break;
1036 case T5::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T5&
>(msg));
break;
1037 case T6::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T6&
>(msg));
break;
1038 case T7::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T7&
>(msg));
break;
1039 case T8::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T8&
>(msg));
break;
1040 case T9::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T9&
>(msg));
break;
1041 case T10::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T10&
>(msg));
break;
1042 case T11::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T11&
>(msg));
break;
1043 case T12::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T12&
>(msg));
break;
1044 case T13::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T13&
>(msg));
break;
1053 static_cast<TDerived*
>(
this)->on_receive_unknown(msg);
1060 template <
typename TMessage>
1061 typename etl::enable_if<etl::is_base_of<imessage, TMessage>::value && etl::is_one_of<TMessage, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>::value,
void>
::type
1062 receive(
const TMessage& msg)
1064 static_cast<TDerived*
>(
this)->on_receive(msg);
1067 template <
typename TMessage>
1068 typename etl::enable_if<etl::is_base_of<imessage, TMessage>::value && !etl::is_one_of<TMessage, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>::value,
void>
::type
1069 receive(
const TMessage& msg)
1077 static_cast<TDerived*
>(
this)->on_receive_unknown(msg);
1083 using imessage_router::accepts;
1089 case T1::ID:
case T2::ID:
case T3::ID:
case T4::ID:
case T5::ID:
case T6::ID:
case T7::ID:
case T8::ID:
1090 case T9::ID:
case T10::ID:
case T11::ID:
case T12::ID:
case T13::ID:
1107 ETL_DEPRECATED
bool is_null_router()
const ETL_OVERRIDE
1113 bool is_producer()
const ETL_OVERRIDE
1119 bool is_consumer()
const ETL_OVERRIDE
1128 template <
typename TDerived,
1129 typename T1,
typename T2,
typename T3,
typename T4,
1130 typename T5,
typename T6,
typename T7,
typename T8,
1131 typename T9,
typename T10,
typename T11,
typename T12>
1132 class message_router<TDerived, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, void, void, void, void>
1133 :
public imessage_router
1137 typedef etl::message_packet<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> message_packet;
1140 message_router(etl::message_router_id_t id_)
1141 : imessage_router(id_)
1148 : imessage_router(id_, successor_)
1155 : imessage_router(etl::imessage_router::MESSAGE_ROUTER)
1161 : imessage_router(etl::imessage_router::MESSAGE_ROUTER, successor_)
1166 using etl::imessage_router::receive;
1170 const size_t id = msg.get_message_id();
1174 case T1::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T1&
>(msg));
break;
1175 case T2::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T2&
>(msg));
break;
1176 case T3::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T3&
>(msg));
break;
1177 case T4::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T4&
>(msg));
break;
1178 case T5::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T5&
>(msg));
break;
1179 case T6::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T6&
>(msg));
break;
1180 case T7::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T7&
>(msg));
break;
1181 case T8::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T8&
>(msg));
break;
1182 case T9::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T9&
>(msg));
break;
1183 case T10::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T10&
>(msg));
break;
1184 case T11::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T11&
>(msg));
break;
1185 case T12::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T12&
>(msg));
break;
1194 static_cast<TDerived*
>(
this)->on_receive_unknown(msg);
1201 template <
typename TMessage>
1202 typename etl::enable_if<etl::is_base_of<imessage, TMessage>::value && etl::is_one_of<TMessage, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>::value,
void>
::type
1203 receive(
const TMessage& msg)
1205 static_cast<TDerived*
>(
this)->on_receive(msg);
1208 template <
typename TMessage>
1209 typename etl::enable_if<etl::is_base_of<imessage, TMessage>::value && !etl::is_one_of<TMessage, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>::value,
void>
::type
1210 receive(
const TMessage& msg)
1218 static_cast<TDerived*
>(
this)->on_receive_unknown(msg);
1224 using imessage_router::accepts;
1230 case T1::ID:
case T2::ID:
case T3::ID:
case T4::ID:
case T5::ID:
case T6::ID:
case T7::ID:
case T8::ID:
1231 case T9::ID:
case T10::ID:
case T11::ID:
case T12::ID:
1248 ETL_DEPRECATED
bool is_null_router()
const ETL_OVERRIDE
1254 bool is_producer()
const ETL_OVERRIDE
1260 bool is_consumer()
const ETL_OVERRIDE
1269 template <
typename TDerived,
1270 typename T1,
typename T2,
typename T3,
typename T4,
1271 typename T5,
typename T6,
typename T7,
typename T8,
1272 typename T9,
typename T10,
typename T11>
1273 class message_router<TDerived, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, void, void, void, void, void>
1274 :
public imessage_router
1278 typedef etl::message_packet<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> message_packet;
1281 message_router(etl::message_router_id_t id_)
1282 : imessage_router(id_)
1289 : imessage_router(id_, successor_)
1296 : imessage_router(etl::imessage_router::MESSAGE_ROUTER)
1302 : imessage_router(etl::imessage_router::MESSAGE_ROUTER, successor_)
1307 using etl::imessage_router::receive;
1311 const size_t id = msg.get_message_id();
1315 case T1::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T1&
>(msg));
break;
1316 case T2::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T2&
>(msg));
break;
1317 case T3::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T3&
>(msg));
break;
1318 case T4::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T4&
>(msg));
break;
1319 case T5::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T5&
>(msg));
break;
1320 case T6::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T6&
>(msg));
break;
1321 case T7::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T7&
>(msg));
break;
1322 case T8::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T8&
>(msg));
break;
1323 case T9::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T9&
>(msg));
break;
1324 case T10::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T10&
>(msg));
break;
1325 case T11::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T11&
>(msg));
break;
1334 static_cast<TDerived*
>(
this)->on_receive_unknown(msg);
1341 template <
typename TMessage>
1342 typename etl::enable_if<etl::is_base_of<imessage, TMessage>::value && etl::is_one_of<TMessage, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>::value,
void>
::type
1343 receive(
const TMessage& msg)
1345 static_cast<TDerived*
>(
this)->on_receive(msg);
1348 template <
typename TMessage>
1349 typename etl::enable_if<etl::is_base_of<imessage, TMessage>::value && !etl::is_one_of<TMessage, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>::value,
void>
::type
1350 receive(
const TMessage& msg)
1358 static_cast<TDerived*
>(
this)->on_receive_unknown(msg);
1364 using imessage_router::accepts;
1370 case T1::ID:
case T2::ID:
case T3::ID:
case T4::ID:
case T5::ID:
case T6::ID:
case T7::ID:
case T8::ID:
1371 case T9::ID:
case T10::ID:
case T11::ID:
1388 ETL_DEPRECATED
bool is_null_router()
const ETL_OVERRIDE
1394 bool is_producer()
const ETL_OVERRIDE
1400 bool is_consumer()
const ETL_OVERRIDE
1409 template <
typename TDerived,
1410 typename T1,
typename T2,
typename T3,
typename T4,
1411 typename T5,
typename T6,
typename T7,
typename T8,
1412 typename T9,
typename T10>
1413 class message_router<TDerived, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, void, void, void, void, void, void>
1414 :
public imessage_router
1421 message_router(etl::message_router_id_t id_)
1422 : imessage_router(id_)
1429 : imessage_router(id_, successor_)
1436 : imessage_router(etl::imessage_router::MESSAGE_ROUTER)
1442 : imessage_router(etl::imessage_router::MESSAGE_ROUTER, successor_)
1447 using etl::imessage_router::receive;
1451 const size_t id = msg.get_message_id();
1455 case T1::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T1&
>(msg));
break;
1456 case T2::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T2&
>(msg));
break;
1457 case T3::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T3&
>(msg));
break;
1458 case T4::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T4&
>(msg));
break;
1459 case T5::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T5&
>(msg));
break;
1460 case T6::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T6&
>(msg));
break;
1461 case T7::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T7&
>(msg));
break;
1462 case T8::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T8&
>(msg));
break;
1463 case T9::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T9&
>(msg));
break;
1464 case T10::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T10&
>(msg));
break;
1473 static_cast<TDerived*
>(
this)->on_receive_unknown(msg);
1480 template <
typename TMessage>
1481 typename etl::enable_if<etl::is_base_of<imessage, TMessage>::value && etl::is_one_of<TMessage, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>::value,
void>
::type
1482 receive(
const TMessage& msg)
1484 static_cast<TDerived*
>(
this)->on_receive(msg);
1487 template <
typename TMessage>
1488 typename etl::enable_if<etl::is_base_of<imessage, TMessage>::value && !etl::is_one_of<TMessage, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>::value,
void>
::type
1489 receive(
const TMessage& msg)
1497 static_cast<TDerived*
>(
this)->on_receive_unknown(msg);
1503 using imessage_router::accepts;
1509 case T1::ID:
case T2::ID:
case T3::ID:
case T4::ID:
case T5::ID:
case T6::ID:
case T7::ID:
case T8::ID:
1510 case T9::ID:
case T10::ID:
1527 ETL_DEPRECATED
bool is_null_router()
const ETL_OVERRIDE
1533 bool is_producer()
const ETL_OVERRIDE
1539 bool is_consumer()
const ETL_OVERRIDE
1548 template <
typename TDerived,
1549 typename T1,
typename T2,
typename T3,
typename T4,
1550 typename T5,
typename T6,
typename T7,
typename T8,
1552 class message_router<TDerived, T1, T2, T3, T4, T5, T6, T7, T8, T9, void, void, void, void, void, void, void>
1553 :
public imessage_router
1560 message_router(etl::message_router_id_t id_)
1561 : imessage_router(id_)
1568 : imessage_router(id_, successor_)
1575 : imessage_router(etl::imessage_router::MESSAGE_ROUTER)
1581 : imessage_router(etl::imessage_router::MESSAGE_ROUTER, successor_)
1586 using etl::imessage_router::receive;
1590 const size_t id = msg.get_message_id();
1594 case T1::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T1&
>(msg));
break;
1595 case T2::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T2&
>(msg));
break;
1596 case T3::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T3&
>(msg));
break;
1597 case T4::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T4&
>(msg));
break;
1598 case T5::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T5&
>(msg));
break;
1599 case T6::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T6&
>(msg));
break;
1600 case T7::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T7&
>(msg));
break;
1601 case T8::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T8&
>(msg));
break;
1602 case T9::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T9&
>(msg));
break;
1611 static_cast<TDerived*
>(
this)->on_receive_unknown(msg);
1618 template <
typename TMessage>
1619 typename etl::enable_if<etl::is_base_of<imessage, TMessage>::value && etl::is_one_of<TMessage, T1, T2, T3, T4, T5, T6, T7, T8, T9>::value,
void>
::type
1620 receive(
const TMessage& msg)
1622 static_cast<TDerived*
>(
this)->on_receive(msg);
1625 template <
typename TMessage>
1626 typename etl::enable_if<etl::is_base_of<imessage, TMessage>::value && !etl::is_one_of<TMessage, T1, T2, T3, T4, T5, T6, T7, T8, T9>::value,
void>
::type
1627 receive(
const TMessage& msg)
1635 static_cast<TDerived*
>(
this)->on_receive_unknown(msg);
1641 using imessage_router::accepts;
1647 case T1::ID:
case T2::ID:
case T3::ID:
case T4::ID:
case T5::ID:
case T6::ID:
case T7::ID:
case T8::ID:
1665 ETL_DEPRECATED
bool is_null_router()
const ETL_OVERRIDE
1671 bool is_producer()
const ETL_OVERRIDE
1677 bool is_consumer()
const ETL_OVERRIDE
1686 template <
typename TDerived,
1687 typename T1,
typename T2,
typename T3,
typename T4,
1688 typename T5,
typename T6,
typename T7,
typename T8>
1689 class message_router<TDerived, T1, T2, T3, T4, T5, T6, T7, T8, void, void, void, void, void, void, void, void>
1690 :
public imessage_router
1697 message_router(etl::message_router_id_t id_)
1698 : imessage_router(id_)
1705 : imessage_router(id_, successor_)
1712 : imessage_router(etl::imessage_router::MESSAGE_ROUTER)
1718 : imessage_router(etl::imessage_router::MESSAGE_ROUTER, successor_)
1723 using etl::imessage_router::receive;
1727 const size_t id = msg.get_message_id();
1731 case T1::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T1&
>(msg));
break;
1732 case T2::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T2&
>(msg));
break;
1733 case T3::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T3&
>(msg));
break;
1734 case T4::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T4&
>(msg));
break;
1735 case T5::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T5&
>(msg));
break;
1736 case T6::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T6&
>(msg));
break;
1737 case T7::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T7&
>(msg));
break;
1738 case T8::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T8&
>(msg));
break;
1747 static_cast<TDerived*
>(
this)->on_receive_unknown(msg);
1754 template <
typename TMessage>
1755 typename etl::enable_if<etl::is_base_of<imessage, TMessage>::value && etl::is_one_of<TMessage, T1, T2, T3, T4, T5, T6, T7, T8>::value,
void>
::type
1756 receive(
const TMessage& msg)
1758 static_cast<TDerived*
>(
this)->on_receive(msg);
1761 template <
typename TMessage>
1762 typename etl::enable_if<etl::is_base_of<imessage, TMessage>::value && !etl::is_one_of<TMessage, T1, T2, T3, T4, T5, T6, T7, T8>::value,
void>
::type
1763 receive(
const TMessage& msg)
1771 static_cast<TDerived*
>(
this)->on_receive_unknown(msg);
1777 using imessage_router::accepts;
1783 case T1::ID:
case T2::ID:
case T3::ID:
case T4::ID:
case T5::ID:
case T6::ID:
case T7::ID:
case T8::ID:
1801 ETL_DEPRECATED
bool is_null_router()
const ETL_OVERRIDE
1807 bool is_producer()
const ETL_OVERRIDE
1813 bool is_consumer()
const ETL_OVERRIDE
1822 template <
typename TDerived,
1823 typename T1,
typename T2,
typename T3,
typename T4,
1824 typename T5,
typename T6,
typename T7>
1825 class message_router<TDerived, T1, T2, T3, T4, T5, T6, T7, void, void, void, void, void, void, void, void, void>
1826 :
public imessage_router
1833 message_router(etl::message_router_id_t id_)
1834 : imessage_router(id_)
1841 : imessage_router(id_, successor_)
1848 : imessage_router(etl::imessage_router::MESSAGE_ROUTER)
1854 : imessage_router(etl::imessage_router::MESSAGE_ROUTER, successor_)
1859 using etl::imessage_router::receive;
1863 const size_t id = msg.get_message_id();
1867 case T1::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T1&
>(msg));
break;
1868 case T2::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T2&
>(msg));
break;
1869 case T3::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T3&
>(msg));
break;
1870 case T4::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T4&
>(msg));
break;
1871 case T5::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T5&
>(msg));
break;
1872 case T6::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T6&
>(msg));
break;
1873 case T7::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T7&
>(msg));
break;
1882 static_cast<TDerived*
>(
this)->on_receive_unknown(msg);
1889 template <
typename TMessage>
1891 receive(
const TMessage& msg)
1893 static_cast<TDerived*
>(
this)->on_receive(msg);
1896 template <
typename TMessage>
1898 receive(
const TMessage& msg)
1906 static_cast<TDerived*
>(
this)->on_receive_unknown(msg);
1912 using imessage_router::accepts;
1918 case T1::ID:
case T2::ID:
case T3::ID:
case T4::ID:
case T5::ID:
case T6::ID:
case T7::ID:
1935 ETL_DEPRECATED
bool is_null_router()
const ETL_OVERRIDE
1941 bool is_producer()
const ETL_OVERRIDE
1947 bool is_consumer()
const ETL_OVERRIDE
1956 template <
typename TDerived,
1957 typename T1,
typename T2,
typename T3,
typename T4,
1958 typename T5,
typename T6>
1959 class message_router<TDerived, T1, T2, T3, T4, T5, T6, void, void, void, void, void, void, void, void, void, void>
1960 :
public imessage_router
1967 message_router(etl::message_router_id_t id_)
1968 : imessage_router(id_)
1975 : imessage_router(id_, successor_)
1982 : imessage_router(etl::imessage_router::MESSAGE_ROUTER)
1988 : imessage_router(etl::imessage_router::MESSAGE_ROUTER, successor_)
1993 using etl::imessage_router::receive;
1997 const size_t id = msg.get_message_id();
2001 case T1::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T1&
>(msg));
break;
2002 case T2::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T2&
>(msg));
break;
2003 case T3::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T3&
>(msg));
break;
2004 case T4::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T4&
>(msg));
break;
2005 case T5::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T5&
>(msg));
break;
2006 case T6::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T6&
>(msg));
break;
2015 static_cast<TDerived*
>(
this)->on_receive_unknown(msg);
2022 template <
typename TMessage>
2024 receive(
const TMessage& msg)
2026 static_cast<TDerived*
>(
this)->on_receive(msg);
2029 template <
typename TMessage>
2031 receive(
const TMessage& msg)
2039 static_cast<TDerived*
>(
this)->on_receive_unknown(msg);
2045 using imessage_router::accepts;
2051 case T1::ID:
case T2::ID:
case T3::ID:
case T4::ID:
case T5::ID:
case T6::ID:
2068 ETL_DEPRECATED
bool is_null_router()
const ETL_OVERRIDE
2074 bool is_producer()
const ETL_OVERRIDE
2080 bool is_consumer()
const ETL_OVERRIDE
2089 template <
typename TDerived,
2090 typename T1,
typename T2,
typename T3,
typename T4,
2092 class message_router<TDerived, T1, T2, T3, T4, T5, void, void, void, void, void, void, void, void, void, void, void>
2093 :
public imessage_router
2100 message_router(etl::message_router_id_t id_)
2101 : imessage_router(id_)
2108 : imessage_router(id_, successor_)
2115 : imessage_router(etl::imessage_router::MESSAGE_ROUTER)
2121 : imessage_router(etl::imessage_router::MESSAGE_ROUTER, successor_)
2126 using etl::imessage_router::receive;
2130 const size_t id = msg.get_message_id();
2134 case T1::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T1&
>(msg));
break;
2135 case T2::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T2&
>(msg));
break;
2136 case T3::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T3&
>(msg));
break;
2137 case T4::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T4&
>(msg));
break;
2138 case T5::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T5&
>(msg));
break;
2147 static_cast<TDerived*
>(
this)->on_receive_unknown(msg);
2154 template <
typename TMessage>
2156 receive(
const TMessage& msg)
2158 static_cast<TDerived*
>(
this)->on_receive(msg);
2161 template <
typename TMessage>
2163 receive(
const TMessage& msg)
2171 static_cast<TDerived*
>(
this)->on_receive_unknown(msg);
2177 using imessage_router::accepts;
2183 case T1::ID:
case T2::ID:
case T3::ID:
case T4::ID:
case T5::ID:
2200 ETL_DEPRECATED
bool is_null_router()
const ETL_OVERRIDE
2206 bool is_producer()
const ETL_OVERRIDE
2212 bool is_consumer()
const ETL_OVERRIDE
2221 template <
typename TDerived,
2222 typename T1,
typename T2,
typename T3,
typename T4>
2223 class message_router<TDerived, T1, T2, T3, T4, void, void, void, void, void, void, void, void, void, void, void, void>
2224 :
public imessage_router
2231 message_router(etl::message_router_id_t id_)
2232 : imessage_router(id_)
2239 : imessage_router(id_, successor_)
2246 : imessage_router(etl::imessage_router::MESSAGE_ROUTER)
2252 : imessage_router(etl::imessage_router::MESSAGE_ROUTER, successor_)
2257 using etl::imessage_router::receive;
2261 const size_t id = msg.get_message_id();
2265 case T1::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T1&
>(msg));
break;
2266 case T2::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T2&
>(msg));
break;
2267 case T3::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T3&
>(msg));
break;
2268 case T4::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T4&
>(msg));
break;
2277 static_cast<TDerived*
>(
this)->on_receive_unknown(msg);
2284 template <
typename TMessage>
2286 receive(
const TMessage& msg)
2288 static_cast<TDerived*
>(
this)->on_receive(msg);
2291 template <
typename TMessage>
2293 receive(
const TMessage& msg)
2301 static_cast<TDerived*
>(
this)->on_receive_unknown(msg);
2307 using imessage_router::accepts;
2313 case T1::ID:
case T2::ID:
case T3::ID:
case T4::ID:
2330 ETL_DEPRECATED
bool is_null_router()
const ETL_OVERRIDE
2336 bool is_producer()
const ETL_OVERRIDE
2342 bool is_consumer()
const ETL_OVERRIDE
2351 template <
typename TDerived,
2352 typename T1,
typename T2,
typename T3>
2353 class message_router<TDerived, T1, T2, T3, void, void, void, void, void, void, void, void, void, void, void, void, void>
2354 :
public imessage_router
2361 message_router(etl::message_router_id_t id_)
2362 : imessage_router(id_)
2369 : imessage_router(id_, successor_)
2376 : imessage_router(etl::imessage_router::MESSAGE_ROUTER)
2382 : imessage_router(etl::imessage_router::MESSAGE_ROUTER, successor_)
2387 using etl::imessage_router::receive;
2391 const size_t id = msg.get_message_id();
2395 case T1::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T1&
>(msg));
break;
2396 case T2::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T2&
>(msg));
break;
2397 case T3::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T3&
>(msg));
break;
2406 static_cast<TDerived*
>(
this)->on_receive_unknown(msg);
2413 template <
typename TMessage>
2415 receive(
const TMessage& msg)
2417 static_cast<TDerived*
>(
this)->on_receive(msg);
2420 template <
typename TMessage>
2422 receive(
const TMessage& msg)
2430 static_cast<TDerived*
>(
this)->on_receive_unknown(msg);
2436 using imessage_router::accepts;
2442 case T1::ID:
case T2::ID:
case T3::ID:
2459 ETL_DEPRECATED
bool is_null_router()
const ETL_OVERRIDE
2465 bool is_producer()
const ETL_OVERRIDE
2471 bool is_consumer()
const ETL_OVERRIDE
2480 template <
typename TDerived,
2481 typename T1,
typename T2>
2482 class message_router<TDerived, T1, T2, void, void, void, void, void, void, void, void, void, void, void, void, void, void>
2483 :
public imessage_router
2490 message_router(etl::message_router_id_t id_)
2491 : imessage_router(id_)
2498 : imessage_router(id_, successor_)
2505 : imessage_router(etl::imessage_router::MESSAGE_ROUTER)
2511 : imessage_router(etl::imessage_router::MESSAGE_ROUTER, successor_)
2516 using etl::imessage_router::receive;
2520 const size_t id = msg.get_message_id();
2524 case T1::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T1&
>(msg));
break;
2525 case T2::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T2&
>(msg));
break;
2534 static_cast<TDerived*
>(
this)->on_receive_unknown(msg);
2541 template <
typename TMessage>
2543 receive(
const TMessage& msg)
2545 static_cast<TDerived*
>(
this)->on_receive(msg);
2548 template <
typename TMessage>
2550 receive(
const TMessage& msg)
2558 static_cast<TDerived*
>(
this)->on_receive_unknown(msg);
2564 using imessage_router::accepts;
2570 case T1::ID:
case T2::ID:
2587 ETL_DEPRECATED
bool is_null_router()
const ETL_OVERRIDE
2593 bool is_producer()
const ETL_OVERRIDE
2599 bool is_consumer()
const ETL_OVERRIDE
2608 template <
typename TDerived,
2610 class message_router<TDerived, T1, void, void, void, void, void, void, void, void, void, void, void, void, void, void, void>
2611 :
public imessage_router
2618 message_router(etl::message_router_id_t id_)
2619 : imessage_router(id_)
2626 : imessage_router(id_, successor_)
2633 : imessage_router(etl::imessage_router::MESSAGE_ROUTER)
2639 : imessage_router(etl::imessage_router::MESSAGE_ROUTER, successor_)
2644 using etl::imessage_router::receive;
2648 const size_t id = msg.get_message_id();
2652 case T1::ID:
static_cast<TDerived*
>(
this)->on_receive(
static_cast<const T1&
>(msg));
break;
2661 static_cast<TDerived*
>(
this)->on_receive_unknown(msg);
2668 template <
typename TMessage>
2670 receive(
const TMessage& msg)
2672 static_cast<TDerived*
>(
this)->on_receive(msg);
2675 template <
typename TMessage>
2677 receive(
const TMessage& msg)
2685 static_cast<TDerived*
>(
this)->on_receive_unknown(msg);
2691 using imessage_router::accepts;
2714 ETL_DEPRECATED
bool is_null_router()
const ETL_OVERRIDE
2720 bool is_producer()
const ETL_OVERRIDE
2726 bool is_consumer()
const ETL_OVERRIDE
This is the base of all message routers.
Definition message_router_generator.h:121
Definition message_packet.h:393
This router can be used as a producer-only of messages, such an interrupt routine.
Definition message_router_generator.h:281
Base exception class for message router.
Definition message_router_generator.h:88
Router id is out of the legal range.
Definition message_router_generator.h:101
Definition message_router.h:558
This router can be used as a sink for messages or a 'null source' router.
Definition message_router_generator.h:203
ETL_NODISCARD etl::imessage & get_message()
Get a reference to the contained message.
Definition shared_message.h:189
bool has_successor() const
Definition successor.h:184
successor_type & get_successor() const
Definition successor.h:174
successor()
Definition successor.h:81
#define ETL_ASSERT(b, e)
Definition error_handler.h:356
ETL_CONSTEXPR exception(string_type reason_, string_type, numeric_type line_)
Constructor.
Definition exception.h:69
enable_if
Definition type_traits_generator.h:1254
bitset_ext
Definition absolute.h:39
etl::imessage_router & get_null_message_router()
null message router functionality.
Definition message_router_generator.h:272
uint_least8_t message_id_t
Allow alternative type for message id.
Definition message_types.h:40
Is T ultimately derived from etl::imessage_router?
Definition message_router_generator.h:360