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);
241 switch (destination_router_id)
245 case etl::imessage_router::ALL_MESSAGE_ROUTERS:
247 router_list_t::iterator irouter = router_list.
begin();
250 while (irouter != router_list.
end())
254 if (router.accepts(shared_msg.get_message().get_message_id()))
256 router.receive(shared_msg);
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()))
280 (*(range.first))->receive(shared_msg);
288 router_list_t::iterator irouter = etl::lower_bound(router_list.
begin(),
290 etl::imessage_bus::MESSAGE_BUS,
291 compare_router_id());
293 while (irouter != router_list.
end())
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