83 using etl::imessage_router::receive;
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);
162 switch (destination_router_id)
166 case etl::imessage_router::ALL_MESSAGE_ROUTERS:
168 router_list_t::iterator irouter = router_list.
begin();
171 while (irouter != router_list.
end())
175 if (router.accepts(message.get_message_id()))
177 router.receive(message);
190 router_list_t::iterator irouter = router_list.
begin();
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);
211 irouter = etl::lower_bound(router_list.
begin(),
213 etl::imessage_bus::MESSAGE_BUS,
214 compare_router_id());
216 while (irouter != router_list.
end())
219 (*irouter)->receive(destination_router_id, message);
232 if (successor.accepts(message.get_message_id()))
234 successor.receive(destination_router_id, message);
243 switch (destination_router_id)
247 case etl::imessage_router::ALL_MESSAGE_ROUTERS:
249 router_list_t::iterator irouter = router_list.
begin();
252 while (irouter != router_list.
end())
256 if (router.accepts(shared_msg.get_message().get_message_id()))
258 router.receive(shared_msg);
272 ETL_OR_STD::pair<router_list_t::iterator, router_list_t::iterator> range = etl::equal_range(router_list.
begin(),
274 destination_router_id,
275 compare_router_id());
278 while (range.first != range.second)
280 if ((*(range.first))->accepts(shared_msg.get_message().get_message_id()))
282 (*(range.first))->receive(shared_msg);
290 router_list_t::iterator irouter = etl::lower_bound(router_list.
begin(),
292 etl::imessage_bus::MESSAGE_BUS,
293 compare_router_id());
295 while (irouter != router_list.
end())
298 (*irouter)->receive(destination_router_id, shared_msg);
311 if (successor.accepts(shared_msg.get_message().get_message_id()))
313 successor.receive(destination_router_id, shared_msg);
318 using imessage_router::accepts;
332 return router_list.
size();
342 ETL_DEPRECATED
bool is_null_router() const ETL_OVERRIDE
348 bool is_producer() const ETL_OVERRIDE
354 bool is_consumer() const ETL_OVERRIDE
384 struct compare_router_id
388 return prouter->get_message_router_id() < id;
393 return id < prouter->get_message_router_id();
397 router_list_t& router_list;
uint_least8_t message_id_t
Allow alternative type for message id.
Definition message_types.h:40