Work in progress

This commit is contained in:
John Wellbelove 2023-02-21 11:55:42 +00:00
parent a89988b8a0
commit 58be8234b8
9 changed files with 179 additions and 9 deletions

View File

@ -1,6 +1,6 @@
{
"name": "Embedded Template Library - Arduino",
"version": "20.35.11",
"version": "20.35.12",
"authors": {
"name": "John Wellbelove",
"email": "john.wellbelove@etlcpp.com"

View File

@ -1,5 +1,5 @@
name=Embedded Template Library - Arduino
version=20.35.11
version=20.35.12
author= John Wellbelove <john.wellbelove@etlcpp.com>
maintainer=John Wellbelove <john.wellbelove@etlcpp.com>
license=MIT

View File

@ -128,6 +128,14 @@ namespace etl
virtual bool is_producer() const = 0;
virtual bool is_consumer() const = 0;
virtual void receive(const etl::imessage& message, etl::message_router_id_t source_router_id)
{
if (source_router_id != get_message_router_id())
{
receive(message);
}
}
//********************************************
virtual void receive(etl::message_router_id_t destination_router_id, const etl::imessage& message)
{
@ -137,6 +145,16 @@ namespace etl
}
}
//********************************************
virtual void receive(etl::message_router_id_t destination_router_id, const etl::imessage& message, etl::message_router_id_t source_router_id)
{
if (((destination_router_id == get_message_router_id()) && (source_router_id != get_message_router_id())) ||
(destination_router_id == imessage_router::ALL_MESSAGE_ROUTERS))
{
receive(message);
}
}
//********************************************
virtual void receive(etl::shared_message shared_msg)
{
@ -152,6 +170,16 @@ namespace etl
}
}
//********************************************
virtual void receive(etl::message_router_id_t destination_router_id, etl::shared_message shared_msg, etl::message_router_id_t source_router_id)
{
if (((destination_router_id == get_message_router_id()) && (source_router_id != get_message_router_id())) ||
(destination_router_id == imessage_router::ALL_MESSAGE_ROUTERS))
{
receive(shared_msg);
}
}
//********************************************
bool accepts(const etl::imessage& msg) const
{

View File

@ -150,14 +150,32 @@ namespace etl
}
//*******************************************
virtual void receive(etl::shared_message shared_msg) ETL_OVERRIDE
virtual void receive(etl::shared_message shared_msg) ETL_OVERRIDE
{
receive(etl::imessage_router::ALL_MESSAGE_ROUTERS, shared_msg);
}
virtual void receive(const etl::imessage& message,
etl::message_router_id_t source_router_id)
{
receive(etl::imessage_router::ALL_MESSAGE_ROUTERS,
message,
source_router_id);
}
//*******************************************
virtual void receive(etl::shared_message shared_msg,
etl::message_router_id_t source_router_id) ETL_OVERRIDE
{
receive(etl::imessage_router::ALL_MESSAGE_ROUTERS,
shared_msg,
source_router_id);
}
//*******************************************
virtual void receive(etl::message_router_id_t destination_router_id,
const etl::imessage& message) ETL_OVERRIDE
const etl::imessage& message,
etl::message_router_id_t source_router_id) ETL_OVERRIDE
{
switch (destination_router_id)
{
@ -238,7 +256,8 @@ namespace etl
//********************************************
virtual void receive(etl::message_router_id_t destination_router_id,
etl::shared_message shared_msg) ETL_OVERRIDE
etl::shared_message shared_msg,
etl::message_router_id_t source_router_id) ETL_OVERRIDE
{
switch (destination_router_id)
{

View File

@ -69,6 +69,92 @@ SOFTWARE.
namespace etl
{
//***************************************************************************
///
//***************************************************************************
class router_id
{
public:
typedef etl::message_router_id_t value_type;
//***********************************
explicit ETL_CONSTEXPR router_id(value_type id_)
: id(id_)
{
}
//***********************************
ETL_CONSTEXPR value_type value() const
{
return id;
}
//***********************************
ETL_CONSTEXPR operator value_type() const
{
return value();
}
//***********************************
ETL_CONSTEXPR bool is_all_routers() const
{
return (id == imessage_router::ALL_MESSAGE_ROUTERS);
}
//***********************************
ETL_CONSTEXPR bool is_null_router() const
{
return (id == imessage_router::NULL_MESSAGE_ROUTER);
}
//***********************************
ETL_CONSTEXPR bool is_message_bus() const
{
return (id == imessage_router::MESSAGE_BUS);
}
//***********************************
ETL_CONSTEXPR bool is_message_broker() const
{
return (id == imessage_router::MESSAGE_BROKER);
}
private:
etl::message_router_id_t id;
};
//***************************************************************************
///
//***************************************************************************
class source_router_id : public router_id
{
public:
typedef etl::message_router_id_t value_type;
explicit ETL_CONSTEXPR source_router_id(value_type id_)
: router_id(id_)
{
}
};
//***************************************************************************
///
//***************************************************************************
class destination_router_id : public router_id
{
public:
typedef etl::message_router_id_t value_type;
explicit ETL_CONSTEXPR destination_router_id(value_type id_)
: router_id(id_)
{
}
};
//***************************************************************************
/// Base exception class for message router
//***************************************************************************
@ -116,6 +202,14 @@ namespace etl
virtual bool is_producer() const = 0;
virtual bool is_consumer() const = 0;
virtual void receive(const etl::imessage& message, etl::message_router_id_t source_router_id)
{
if (source_router_id != get_message_router_id())
{
receive(message);
}
}
//********************************************
virtual void receive(etl::message_router_id_t destination_router_id, const etl::imessage& message)
{
@ -125,6 +219,16 @@ namespace etl
}
}
//********************************************
virtual void receive(etl::message_router_id_t destination_router_id, const etl::imessage& message, etl::message_router_id_t source_router_id)
{
if (((destination_router_id == get_message_router_id()) && (source_router_id != get_message_router_id())) ||
(destination_router_id == imessage_router::ALL_MESSAGE_ROUTERS))
{
receive(message);
}
}
//********************************************
virtual void receive(etl::shared_message shared_msg)
{
@ -140,6 +244,25 @@ namespace etl
}
}
//********************************************
virtual void receive(etl::shared_message shared_msg, etl::message_router_id_t source_router_id)
{
if (source_router_id != get_message_router_id())
{
receive(shared_msg);
}
}
//********************************************
virtual void receive(etl::message_router_id_t destination_router_id, etl::shared_message shared_msg, etl::message_router_id_t source_router_id)
{
if (((destination_router_id == get_message_router_id()) && (source_router_id != get_message_router_id())) ||
(destination_router_id == imessage_router::ALL_MESSAGE_ROUTERS))
{
receive(shared_msg);
}
}
//********************************************
bool accepts(const etl::imessage& msg) const
{

View File

@ -40,7 +40,7 @@ SOFTWARE.
#define ETL_VERSION_MAJOR 20
#define ETL_VERSION_MINOR 35
#define ETL_VERSION_PATCH 11
#define ETL_VERSION_PATCH 12
#define ETL_VERSION ETL_STRING(ETL_VERSION_MAJOR) "." ETL_STRING(ETL_VERSION_MINOR) "." ETL_STRING(ETL_VERSION_PATCH)
#define ETL_VERSION_W ETL_WIDE_STRING(ETL_VERSION_MAJOR) L"." ETL_WIDE_STRING(ETL_VERSION_MINOR) L"." ETL_WIDE_STRING(ETL_VERSION_PATCH)

View File

@ -1,6 +1,6 @@
{
"name": "Embedded Template Library",
"version": "20.35.11",
"version": "20.35.12",
"authors": {
"name": "John Wellbelove",
"email": "john.wellbelove@etlcpp.com"

View File

@ -1,5 +1,5 @@
name=Embedded Template Library
version=20.35.11
version=20.35.12
author= John Wellbelove <john.wellbelove@etlcpp.com>
maintainer=John Wellbelove <john.wellbelove@etlcpp.com>
license=MIT

View File

@ -1 +1 @@
20.35.11
20.35.12