83 using etl::imessage_router::receive;
95 ok = !router_list.
full();
103 router.get_message_router_id(),
104 compare_router_id());
118 if (
id == etl::imessage_bus::ALL_MESSAGE_ROUTERS)
124 ETL_OR_STD::pair<router_list_t::iterator, router_list_t::iterator> range = etl::equal_range(router_list.
begin(),
127 compare_router_id());
129 router_list.
erase(range.first, range.second);
136 router_list_t::iterator
irouter = etl::find(router_list.
begin(),
147 virtual void receive(
const etl::imessage& message) ETL_OVERRIDE
149 receive(etl::imessage_router::ALL_MESSAGE_ROUTERS, message);
155 receive(etl::imessage_router::ALL_MESSAGE_ROUTERS,
shared_msg);
159 virtual void receive(etl::message_router_id_t destination_router_id,
162 switch (destination_router_id)
166 case etl::imessage_router::ALL_MESSAGE_ROUTERS:
175 if (
router.accepts(message.get_message_id()))
193 ETL_OR_STD::pair<router_list_t::iterator, router_list_t::iterator> range = etl::equal_range(router_list.
begin(),
195 destination_router_id,
196 compare_router_id());
199 while (range.first != range.second)
201 if ((*(range.first))->accepts(message.get_message_id()))
203 (*(range.first))->receive(message);
213 etl::imessage_bus::MESSAGE_BUS,
214 compare_router_id());
219 (*irouter)->receive(destination_router_id, message);
238 virtual void receive(etl::message_router_id_t destination_router_id,
241 switch (destination_router_id)
245 case etl::imessage_router::ALL_MESSAGE_ROUTERS:
270 ETL_OR_STD::pair<router_list_t::iterator, router_list_t::iterator> range = etl::equal_range(router_list.
begin(),
272 destination_router_id,
273 compare_router_id());
276 while (range.first != range.second)
278 if ((*(range.first))->accepts(
shared_msg.get_message().get_message_id()))
288 router_list_t::iterator
irouter = etl::lower_bound(router_list.
begin(),
290 etl::imessage_bus::MESSAGE_BUS,
291 compare_router_id());
296 (*irouter)->receive(destination_router_id,
shared_msg);
314 using imessage_router::accepts;
352 return router_list.
size();
362 ETL_DEPRECATED
bool is_null_router()
const ETL_OVERRIDE
368 bool is_producer()
const ETL_OVERRIDE
374 bool is_consumer()
const ETL_OVERRIDE
404 struct compare_router_id
408 return prouter->get_message_router_id() < id;
413 return id <
prouter->get_message_router_id();
417 router_list_t& router_list;
uint_least8_t message_id_t
Allow alternative type for message id.
Definition message_types.h:40