mirror of
https://github.com/ETLCPP/etl.git
synced 2026-04-30 19:09:10 +08:00
Updated QueuedMessageRouter and QueuedFSM examples to use current message frameworks.
This commit is contained in:
parent
71e83c1b5e
commit
830d0d00f1
@ -99,18 +99,18 @@ public:
|
||||
//***************************************************************************
|
||||
// The overridden virtual receive function.
|
||||
//***************************************************************************
|
||||
void receive(etl::imessage_router& sender_, const etl::imessage& msg_) override
|
||||
void receive(const etl::imessage& msg_) override
|
||||
{
|
||||
if (accepts(msg_))
|
||||
{
|
||||
// Place in queue.
|
||||
queue.emplace(&sender_, msg_);
|
||||
queue.emplace(msg_);
|
||||
|
||||
std::cout << "Queueing message " << int(msg_.message_id) << std::endl;
|
||||
std::cout << "Queueing message " << int(msg_.get_message_id()) << std::endl;
|
||||
}
|
||||
else
|
||||
{
|
||||
std::cout << "Ignoring message " << int(msg_.message_id) << std::endl;
|
||||
std::cout << "Ignoring message " << int(msg_.get_message_id()) << std::endl;
|
||||
}
|
||||
}
|
||||
|
||||
@ -121,14 +121,13 @@ public:
|
||||
{
|
||||
while (!queue.empty())
|
||||
{
|
||||
Item& item = queue.front();
|
||||
etl::imessage& msg = item.packet.get();
|
||||
etl::imessage_router& sender = *item.sender;
|
||||
std::cout << "Processing message " << int(msg.message_id) << std::endl;
|
||||
message_packet& packet = queue.front();
|
||||
etl::imessage& msg = packet.get();
|
||||
std::cout << "Processing message " << int(msg.get_message_id()) << std::endl;
|
||||
|
||||
// Call the base class's receive function.
|
||||
// This will route it to the correct 'on_event' handler.
|
||||
etl::fsm::receive(sender, msg);
|
||||
etl::fsm::receive(msg);
|
||||
|
||||
queue.pop();
|
||||
}
|
||||
@ -136,23 +135,10 @@ public:
|
||||
|
||||
private:
|
||||
|
||||
//***************************************************************************
|
||||
// The item to queue.
|
||||
//***************************************************************************
|
||||
struct Item
|
||||
{
|
||||
Item(etl::imessage_router* sender_, const etl::imessage& msg_)
|
||||
: sender(sender_),
|
||||
packet(msg_)
|
||||
{
|
||||
}
|
||||
|
||||
etl::imessage_router* sender;
|
||||
etl::message_packet< Message1, Message2, Message3, Message4> packet; // Defines a packet suitable for all possible messages.
|
||||
};
|
||||
typedef etl::message_packet< Message1, Message2, Message3, Message4> message_packet;
|
||||
|
||||
// The queue of message items.
|
||||
etl::queue<Item, 10> queue;
|
||||
etl::queue<message_packet, 10> queue;
|
||||
};
|
||||
|
||||
//*****************************************************************************
|
||||
@ -178,33 +164,33 @@ public:
|
||||
}
|
||||
|
||||
//***************************************************************************
|
||||
etl::fsm_state_id_t on_event(etl::imessage_router& sender, const Message1& msg)
|
||||
etl::fsm_state_id_t on_event(const Message1& msg)
|
||||
{
|
||||
std::cout << " S1 : Received message " << int(msg.message_id) << " : '" << msg.i << "'" << std::endl;
|
||||
std::cout << " S1 : Received message " << int(msg.get_message_id()) << " : '" << msg.i << "'" << std::endl;
|
||||
std::cout.flush();
|
||||
return STATE1;
|
||||
}
|
||||
|
||||
//***************************************************************************
|
||||
etl::fsm_state_id_t on_event(etl::imessage_router& sender, const Message2& msg)
|
||||
etl::fsm_state_id_t on_event(const Message2& msg)
|
||||
{
|
||||
std::cout << " S1 : Received message " << int(msg.message_id) << " : '" << msg.d << "'" << std::endl;
|
||||
std::cout << " S1 : Received message " << int(msg.get_message_id()) << " : '" << msg.d << "'" << std::endl;
|
||||
std::cout.flush();
|
||||
return STATE1;
|
||||
}
|
||||
|
||||
//***************************************************************************
|
||||
etl::fsm_state_id_t on_event(etl::imessage_router& sender, const Message3& msg)
|
||||
etl::fsm_state_id_t on_event(const Message3& msg)
|
||||
{
|
||||
std::cout << " S1 : Received message " << int(msg.message_id) << " : '" << msg.s << "'" << std::endl;
|
||||
std::cout << " S1 : Received message " << int(msg.get_message_id()) << " : '" << msg.s << "'" << std::endl;
|
||||
std::cout.flush();
|
||||
return STATE1;
|
||||
}
|
||||
|
||||
//***************************************************************************
|
||||
etl::fsm_state_id_t on_event_unknown(etl::imessage_router& sender, const etl::imessage& msg)
|
||||
etl::fsm_state_id_t on_event_unknown(const etl::imessage& msg)
|
||||
{
|
||||
std::cout << " S1 : Received unknown message " << int(msg.message_id) << std::endl;
|
||||
std::cout << " S1 : Received unknown message " << int(msg.get_message_id()) << std::endl;
|
||||
std::cout.flush();
|
||||
return STATE2;
|
||||
}
|
||||
@ -233,30 +219,30 @@ public:
|
||||
}
|
||||
|
||||
//***************************************************************************
|
||||
etl::fsm_state_id_t on_event(etl::imessage_router& sender, const Message1& msg)
|
||||
etl::fsm_state_id_t on_event(const Message1& msg)
|
||||
{
|
||||
std::cout << " S2 : Received message " << int(msg.message_id) << " : '" << msg.i << "'" << std::endl;
|
||||
std::cout << " S2 : Received message " << int(msg.get_message_id()) << " : '" << msg.i << "'" << std::endl;
|
||||
return STATE2;
|
||||
}
|
||||
|
||||
//***************************************************************************
|
||||
etl::fsm_state_id_t on_event(etl::imessage_router& sender, const Message2& msg)
|
||||
etl::fsm_state_id_t on_event(const Message2& msg)
|
||||
{
|
||||
std::cout << " S2 : Received message " << int(msg.message_id) << " : '" << msg.d << "'" << std::endl;
|
||||
std::cout << " S2 : Received message " << int(msg.get_message_id()) << " : '" << msg.d << "'" << std::endl;
|
||||
return STATE2;
|
||||
}
|
||||
|
||||
//***************************************************************************
|
||||
etl::fsm_state_id_t on_event(etl::imessage_router& sender, const Message3& msg)
|
||||
etl::fsm_state_id_t on_event(const Message3& msg)
|
||||
{
|
||||
std::cout << " S2 : Received message " << int(msg.message_id) << " : '" << msg.s << "'" << std::endl;
|
||||
std::cout << " S2 : Received message " << int(msg.get_message_id()) << " : '" << msg.s << "'" << std::endl;
|
||||
return STATE2;
|
||||
}
|
||||
|
||||
//***************************************************************************
|
||||
etl::fsm_state_id_t on_event_unknown(etl::imessage_router& sender, const etl::imessage& msg)
|
||||
etl::fsm_state_id_t on_event_unknown(const etl::imessage& msg)
|
||||
{
|
||||
std::cout << " S2 : Received unknown message " << int(msg.message_id) << std::endl;
|
||||
std::cout << " S2 : Received unknown message " << int(msg.get_message_id()) << std::endl;
|
||||
return STATE1;
|
||||
}
|
||||
};
|
||||
|
||||
@ -23,32 +23,32 @@
|
||||
<ProjectGuid>{2BB47D48-5EFC-4C38-B2BE-002172F00E3B}</ProjectGuid>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
<RootNamespace>QueuedFSM</RootNamespace>
|
||||
<WindowsTargetPlatformVersion>10.0.18362.0</WindowsTargetPlatformVersion>
|
||||
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
@ -39,7 +39,7 @@ SOFTWARE.
|
||||
|
||||
#define ETL_VERSION_MAJOR 20
|
||||
#define ETL_VERSION_MINOR 10
|
||||
#define ETL_VERSION_PATCH 5
|
||||
#define ETL_VERSION_PATCH 6
|
||||
#define ETL_VERSION ETL_STRINGIFY(ETL_VERSION_MAJOR) "." ETL_STRINGIFY(ETL_VERSION_MINOR) "." ETL_STRINGIFY(ETL_VERSION_PATCH)
|
||||
#define ETL_VERSION_W ETL_STRINGIFY(ETL_VERSION_MAJOR) L"." ETL_STRINGIFY(ETL_VERSION_MINOR) L"." ETL_STRINGIFY(ETL_VERSION_PATCH)
|
||||
#define ETL_VERSION_U16 ETL_STRINGIFY(ETL_VERSION_MAJOR) u"." ETL_STRINGIFY(ETL_VERSION_MINOR) u"." ETL_STRINGIFY(ETL_VERSION_PATCH)
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "ETL Embedded Template Library",
|
||||
"version": "20.10.5",
|
||||
"version": "20.10.6",
|
||||
"author s": {
|
||||
"name": "John Wellbelove",
|
||||
"email": "john.wellbelove@etlcpp.com"
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
name=Embedded Template Library ETL
|
||||
version=20.10.5
|
||||
version=20.10.6
|
||||
author= John Wellbelove <john.wellbelove@etlcpp.com>
|
||||
maintainer=John Wellbelove <john.wellbelove@etlcpp.com>
|
||||
license=MIT
|
||||
|
||||
@ -8,7 +8,7 @@ project('PROJECT_NAME',
|
||||
'cpp_std=c++17', 'build.cpp_std=c++17',
|
||||
],
|
||||
meson_version: '>=0.54.0',
|
||||
version: '20.10.5'
|
||||
version: '20.10.6'
|
||||
)
|
||||
|
||||
######################
|
||||
|
||||
@ -1,3 +1,7 @@
|
||||
===============================================================================
|
||||
20.10.6
|
||||
Updated QueuedMessageRouter and QueuedFSM examples to use current message frameworks.
|
||||
|
||||
===============================================================================
|
||||
20.10.5
|
||||
Added container_type to etl::stack, etl::queue and etl::priority_queue.
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user