Commit aaced3c3 authored by neverlord's avatar neverlord

tuned filter function

parent 04ddeb67
...@@ -63,32 +63,37 @@ enum filter_result ...@@ -63,32 +63,37 @@ enum filter_result
yielding_message_queue_impl::filter_result yielding_message_queue_impl::filter_result
yielding_message_queue_impl::filter_msg(const any_tuple& msg) yielding_message_queue_impl::filter_msg(const any_tuple& msg)
{ {
if ( m_trap_exit == false if (msg.size() == 2 && m_atom_value_uti == &(msg.utype_info_at(0)))
&& msg.size() == 2
&& m_atom_value_uti == &(msg.utype_info_at(0)))
{ {
if (*reinterpret_cast<const atom_value*>(msg.at(0)) == atom(":Exit")) switch ((std::uint64_t) *reinterpret_cast<const atom_value*>(msg.at(0)))
{ {
if (m_ui32_uti == &(msg.utype_info_at(1))) case atom(":Exit"):
{ {
auto why = *reinterpret_cast<const std::uint32_t*>(msg.at(1)); if (m_trap_exit == false)
if (why != exit_reason::normal)
{ {
self()->quit(why); if (m_ui32_uti == &(msg.utype_info_at(1)))
{
auto why = *reinterpret_cast<const std::uint32_t*>(msg.at(1));
if (why != exit_reason::normal)
{
self()->quit(why);
}
return normal_exit_signal;
}
} }
return normal_exit_signal; break;
} }
} case atom(":Timeout"):
} {
if ( msg.size() == 2 if (m_ui32_uti == &(msg.utype_info_at(1)))
&& m_atom_value_uti == &(msg.utype_info_at(0)) {
&& atom(":Timeout") == *reinterpret_cast<const atom_value*>(msg.at(0))) auto id = *reinterpret_cast<const std::uint32_t*>(msg.at(1));
{ return (id == m_active_timeout_id) ? timeout_message
if (m_ui32_uti == &(msg.utype_info_at(1))) : expired_timeout_message;
{ }
auto id = *reinterpret_cast<const std::uint32_t*>(msg.at(1)); break;
return (id == m_active_timeout_id) ? timeout_message }
: expired_timeout_message; default: break; /* nop */
} }
} }
return ordinary_message; return ordinary_message;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment