From f849ef4f5ea27afe824fb3573e0a31e07aad592c Mon Sep 17 00:00:00 2001 From: rex-schilasky <49162693+rex-schilasky@users.noreply.github.com> Date: Mon, 20 Jan 2025 14:50:24 +0100 Subject: [PATCH 1/3] Removed `corrupted` and `update_connection` events from `eSubscriberEvent` and `ePublisherEvent` enums. Removed `clock` field from `SPubEventCallbackData` and `SSubEventCallbackData` structs. Added `FireDroppedEvent` function to `CSubscriberImpl` and updated dropped message handling. --- ecal/core/include/ecal/ecal_callback.h | 44 +++++------ ecal/core/src/pubsub/ecal_publisher_impl.cpp | 28 ++----- ecal/core/src/pubsub/ecal_publisher_impl.h | 3 +- ecal/core/src/pubsub/ecal_subscriber_impl.cpp | 77 ++++++------------- ecal/core/src/pubsub/ecal_subscriber_impl.h | 6 +- lang/c/core/src/ecal_publisher_cimpl.cpp | 4 +- lang/c/core/src/ecal_subscriber_cimpl.cpp | 6 +- .../src/person_events_rec.cpp | 14 +--- .../src/person_events_snd.cpp | 14 +--- 9 files changed, 56 insertions(+), 140 deletions(-) diff --git a/ecal/core/include/ecal/ecal_callback.h b/ecal/core/include/ecal/ecal_callback.h index 9bfef28c82..7e47475997 100644 --- a/ecal/core/include/ecal/ecal_callback.h +++ b/ecal/core/include/ecal/ecal_callback.h @@ -52,20 +52,16 @@ namespace eCAL none = 0, connected = 1, disconnected = 2, - dropped = 3, - corrupted = 5, - update_connection = 6, + dropped = 3 }; inline std::string to_string(eSubscriberEvent event_) { switch (event_) { - case eSubscriberEvent::none: return "NONE"; - case eSubscriberEvent::connected: return "CONNECTED"; - case eSubscriberEvent::disconnected: return "DISCONNECTED"; - case eSubscriberEvent::dropped : return "DROPPED"; - case eSubscriberEvent::corrupted: return "CORRUPTED"; - case eSubscriberEvent::update_connection : return "UPDATED_CONNECTION"; - default: return "Unknown"; + case eSubscriberEvent::none: return "NONE"; + case eSubscriberEvent::connected: return "CONNECTED"; + case eSubscriberEvent::disconnected: return "DISCONNECTED"; + case eSubscriberEvent::dropped : return "DROPPED"; + default: return "Unknown"; } } @@ -77,18 +73,16 @@ namespace eCAL none = 0, connected = 1, disconnected = 2, - dropped = 3, - update_connection = 4, + dropped = 3 }; inline std::string to_string(ePublisherEvent event_) { switch (event_) { - case ePublisherEvent::none: return "NONE"; - case ePublisherEvent::connected: return "CONNECTED"; - case ePublisherEvent::disconnected: return "DISCONNECTED"; - case ePublisherEvent::dropped: return "DROPPED"; - case ePublisherEvent::update_connection: return "UPDATED_CONNECTION"; - default: return "Unknown"; + case ePublisherEvent::none: return "NONE"; + case ePublisherEvent::connected: return "CONNECTED"; + case ePublisherEvent::disconnected: return "DISCONNECTED"; + case ePublisherEvent::dropped: return "DROPPED"; + default: return "Unknown"; } } @@ -153,10 +147,9 @@ namespace eCAL **/ struct SPubEventCallbackData { - ePublisherEvent type{ ePublisherEvent::none }; //!< publisher event type - long long time{ 0 }; //!< publisher event time in µs - long long clock{ 0 }; //!< publisher event clock - SDataTypeInformation tdatatype; //!< datatype description of the connected subscriber (for pub_event_update_connection only) + ePublisherEvent event_type{ ePublisherEvent::none }; //!< publisher event type + long long event_time{ 0 }; //!< publisher event time in µs (eCAL time) + SDataTypeInformation subscriber_datatype; //!< datatype description of the connected subscriber }; /** @@ -172,10 +165,9 @@ namespace eCAL **/ struct SSubEventCallbackData { - eSubscriberEvent type{ eSubscriberEvent::none }; //!< subscriber event type - long long time{ 0 }; //!< subscriber event time in µs - long long clock{ 0 }; //!< subscriber event clock - SDataTypeInformation tdatatype; //!< topic information of the connected subscriber (for sub_event_update_connection only) + eSubscriberEvent event_type{ eSubscriberEvent::none }; //!< subscriber event type + long long event_time{ 0 }; //!< subscriber event time in µs (eCAL time) + SDataTypeInformation publisher_datatype; //!< topic information of the connected publisher }; /** diff --git a/ecal/core/src/pubsub/ecal_publisher_impl.cpp b/ecal/core/src/pubsub/ecal_publisher_impl.cpp index cf4b34cee7..47a790817c 100644 --- a/ecal/core/src/pubsub/ecal_publisher_impl.cpp +++ b/ecal/core/src/pubsub/ecal_publisher_impl.cpp @@ -25,6 +25,7 @@ #include #include #include +#include #if ECAL_CORE_REGISTRATION #include "registration/ecal_registration_provider.h" @@ -489,8 +490,7 @@ namespace eCAL #endif // add key to connection map, including connection state - bool is_new_connection = false; - bool is_updated_connection = false; + bool is_new_connection = false; { const std::lock_guard lock(m_connection_map_mutex); auto subscription_info_iter = m_connection_map.find(subscription_info_); @@ -511,11 +511,6 @@ namespace eCAL { is_new_connection = true; } - // the connection was active, so we just update it - else - { - is_updated_connection = true; - } // update the data type, the layer states and set the state active connection = SConnection{ data_type_info_, sub_layer_states_, true }; @@ -532,11 +527,6 @@ namespace eCAL // fire connect event FireConnectEvent(subscription_info_, data_type_info_); } - else if (is_updated_connection) - { - // fire update event - FireUpdateEvent(subscription_info_, data_type_info_); - } #ifndef NDEBUG Logging::Log(Logging::log_level_debug3, m_attributes.topic_name + "::CPublisherImpl::ApplySubscriberRegistration"); @@ -739,10 +729,9 @@ namespace eCAL if(m_event_id_callback) { SPubEventCallbackData data; - data.type = type_; - data.time = std::chrono::duration_cast(std::chrono::steady_clock::now().time_since_epoch()).count(); - data.clock = 0; - data.tdatatype = data_type_info_; + data.event_type = type_; + data.event_time = eCAL::Time::GetMicroSeconds(); + data.subscriber_datatype = data_type_info_; Registration::STopicId topic_id; topic_id.topic_id.entity_id = subscription_info_.entity_id; @@ -763,7 +752,7 @@ namespace eCAL { v5::SPubEventCallbackData event_data; event_data.type = type_; - event_data.time = std::chrono::duration_cast(std::chrono::steady_clock::now().time_since_epoch()).count(); + event_data.time = eCAL::Time::GetMicroSeconds(); event_data.clock = 0; event_data.tid = std::to_string(subscription_info_.entity_id); event_data.tdatatype = data_type_info_; @@ -779,11 +768,6 @@ namespace eCAL FireEvent(ePublisherEvent::connected, subscription_info_, data_type_info_); } - void CPublisherImpl::FireUpdateEvent(const SSubscriptionInfo& subscription_info_, const SDataTypeInformation& data_type_info_) - { - FireEvent(ePublisherEvent::update_connection, subscription_info_, data_type_info_); - } - void CPublisherImpl::FireDisconnectEvent(const SSubscriptionInfo& subscription_info_, const SDataTypeInformation& data_type_info_) { FireEvent(ePublisherEvent::disconnected, subscription_info_, data_type_info_); diff --git a/ecal/core/src/pubsub/ecal_publisher_impl.h b/ecal/core/src/pubsub/ecal_publisher_impl.h index 3886ff15d3..984b767d9d 100644 --- a/ecal/core/src/pubsub/ecal_publisher_impl.h +++ b/ecal/core/src/pubsub/ecal_publisher_impl.h @@ -133,7 +133,6 @@ namespace eCAL void FireEvent(const ePublisherEvent type_, const SSubscriptionInfo& subscription_info_, const SDataTypeInformation& data_type_info_); void FireConnectEvent (const SSubscriptionInfo& subscription_info_, const SDataTypeInformation& data_type_info_); - void FireUpdateEvent (const SSubscriptionInfo& subscription_info_, const SDataTypeInformation& data_type_info_); void FireDisconnectEvent(const SSubscriptionInfo& subscription_info_, const SDataTypeInformation& data_type_info_); size_t GetConnectionCount(); @@ -168,7 +167,7 @@ namespace eCAL EventCallbackMapT m_event_callback_map; std::mutex m_event_id_callback_mutex; - PubEventCallbackT m_event_id_callback; + PubEventCallbackT m_event_id_callback; long long m_id = 0; long long m_clock = 0; diff --git a/ecal/core/src/pubsub/ecal_subscriber_impl.cpp b/ecal/core/src/pubsub/ecal_subscriber_impl.cpp index 019d62dce6..f5fbea7d37 100644 --- a/ecal/core/src/pubsub/ecal_subscriber_impl.cpp +++ b/ecal/core/src/pubsub/ecal_subscriber_impl.cpp @@ -24,6 +24,7 @@ #include #include #include +#include #if ECAL_CORE_REGISTRATION #include "registration/ecal_registration_provider.h" @@ -308,8 +309,7 @@ namespace eCAL #endif // add key to connection map, including connection state - bool is_new_connection = false; - bool is_updated_connection = false; + bool is_new_connection = false; { const std::lock_guard lock(m_connection_map_mtx); auto publication_info_iter = m_connection_map.find(publication_info_); @@ -330,11 +330,6 @@ namespace eCAL { is_new_connection = true; } - // the connection was active, so we just update it - else - { - is_updated_connection = true; - } // update the data type and layer states, even if the connection is not new connection = SConnection{ data_type_info_, pub_layer_states_, true }; @@ -350,11 +345,6 @@ namespace eCAL // fire connect event FireConnectEvent(publication_info_, data_type_info_); } - else if (is_updated_connection) - { - // fire update event - FireUpdateEvent(publication_info_, data_type_info_); - } #ifndef NDEBUG Logging::Log(Logging::log_level_debug3, m_attributes.topic_name + "::CSubscriberImpl::ApplyPublisherRegistration"); @@ -497,7 +487,11 @@ namespace eCAL // - a dropped message // - an out-of-order message // - a multiple sent message - if (!CheckMessageClock(topic_info_.tid, clock_)) + SPublicationInfo publication_info; + publication_info.entity_id = topic_info_.tid; + publication_info.host_name = topic_info_.hname; + publication_info.process_id = topic_info_.pid; + if (!CheckMessageClock(publication_info, clock_)) { // we will not process that message return(0); @@ -788,10 +782,9 @@ namespace eCAL if (m_event_id_callback) { SSubEventCallbackData data; - data.type = type_; - data.time = std::chrono::duration_cast(std::chrono::steady_clock::now().time_since_epoch()).count(); - data.clock = 0; - data.tdatatype = data_type_info_; + data.event_type = type_; + data.event_time = eCAL::Time::GetMicroSeconds(); + data.publisher_datatype = data_type_info_; Registration::STopicId topic_id; topic_id.topic_id.entity_id = publication_info_.entity_id; @@ -812,7 +805,7 @@ namespace eCAL { v5::SSubEventCallbackData data; data.type = type_; - data.time = std::chrono::duration_cast(std::chrono::steady_clock::now().time_since_epoch()).count(); + data.time = eCAL::Time::GetMicroSeconds(); data.clock = 0; data.tid = std::to_string(publication_info_.entity_id); data.tdatatype = data_type_info_; @@ -828,14 +821,14 @@ namespace eCAL FireEvent(eSubscriberEvent::connected, publication_info_, data_type_info_); } - void CSubscriberImpl::FireUpdateEvent(const SPublicationInfo& publication_info_, const SDataTypeInformation& data_type_info_) + void CSubscriberImpl::FireDisconnectEvent(const SPublicationInfo& publication_info_, const SDataTypeInformation& data_type_info_) { - FireEvent(eSubscriberEvent::update_connection, publication_info_, data_type_info_); + FireEvent(eSubscriberEvent::disconnected, publication_info_, data_type_info_); } - void CSubscriberImpl::FireDisconnectEvent(const SPublicationInfo& publication_info_, const SDataTypeInformation& data_type_info_) + void CSubscriberImpl::FireDroppedEvent(const SPublicationInfo& publication_info_, const SDataTypeInformation& data_type_info_) { - FireEvent(eSubscriberEvent::disconnected, publication_info_, data_type_info_); + FireEvent(eSubscriberEvent::dropped, publication_info_, data_type_info_); } size_t CSubscriberImpl::GetConnectionCount() @@ -852,14 +845,14 @@ namespace eCAL return count; } - bool CSubscriberImpl::CheckMessageClock(const Registration::EntityIdT& tid_, long long current_clock_) + bool CSubscriberImpl::CheckMessageClock(const SPublicationInfo& publication_info_, long long current_clock_) { - auto iter = m_writer_counter_map.find(tid_); + auto iter = m_writer_counter_map.find(publication_info_.entity_id); // initial entry if (iter == m_writer_counter_map.end()) { - m_writer_counter_map[tid_] = current_clock_; + m_writer_counter_map[publication_info_.entity_id] = current_clock_; return true; } // clock entry exists @@ -906,37 +899,11 @@ namespace eCAL msg += "\')"; Logging::Log(log_level_warning, msg); #endif - // new event handling with topic id - if (m_event_id_callback) - { - SSubEventCallbackData data; - data.type = eSubscriberEvent::dropped; - data.time = std::chrono::duration_cast(std::chrono::steady_clock::now().time_since_epoch()).count(); - data.clock = current_clock_; - Registration::STopicId topic_id; - topic_id.topic_name = m_attributes.topic_name; - const std::lock_guard lock(m_event_id_callback_mutex); - - // call event callback - m_event_id_callback(topic_id, data); - } - - // deprecated event handling with topic name - { - const std::lock_guard lock(m_event_callback_map_mutex); - auto citer = m_event_callback_map.find(eSubscriberEvent::dropped); - if (citer != m_event_callback_map.end() && citer->second) - { - v5::SSubEventCallbackData data; - data.type = eSubscriberEvent::dropped; - data.time = std::chrono::duration_cast(std::chrono::steady_clock::now().time_since_epoch()).count(); - data.clock = current_clock_; - - // call event callback - (citer->second)(m_attributes.topic_name.c_str(), &data); - } - } + // fire dropped event + // we do not know the data type of the dropped message here + // so we use an empty data type information + FireDroppedEvent(publication_info_, SDataTypeInformation()); // increase the drop counter m_message_drops += clock_difference; diff --git a/ecal/core/src/pubsub/ecal_subscriber_impl.h b/ecal/core/src/pubsub/ecal_subscriber_impl.h index e30a721735..af6d375761 100644 --- a/ecal/core/src/pubsub/ecal_subscriber_impl.h +++ b/ecal/core/src/pubsub/ecal_subscriber_impl.h @@ -126,12 +126,12 @@ namespace eCAL void FireEvent(const eSubscriberEvent type_, const SPublicationInfo& publication_info_, const SDataTypeInformation& data_type_info_); void FireConnectEvent (const SPublicationInfo& publication_info_, const SDataTypeInformation& data_type_info_); - void FireUpdateEvent (const SPublicationInfo& publication_info_, const SDataTypeInformation& data_type_info_); void FireDisconnectEvent(const SPublicationInfo& publication_info_, const SDataTypeInformation& data_type_info_); - + void FireDroppedEvent (const SPublicationInfo& publication_info_, const SDataTypeInformation& data_type_info_); + size_t GetConnectionCount(); - bool CheckMessageClock(const Registration::EntityIdT& tid_, long long current_clock_); + bool CheckMessageClock(const SPublicationInfo& publication_info_, long long current_clock_); int32_t GetFrequency(); diff --git a/lang/c/core/src/ecal_publisher_cimpl.cpp b/lang/c/core/src/ecal_publisher_cimpl.cpp index ba64778196..81a3d50a45 100644 --- a/lang/c/core/src/ecal_publisher_cimpl.cpp +++ b/lang/c/core/src/ecal_publisher_cimpl.cpp @@ -39,8 +39,7 @@ namespace case eCAL::ePublisherEvent::connected: return pub_event_connected; case eCAL::ePublisherEvent::disconnected: return pub_event_disconnected; case eCAL::ePublisherEvent::dropped: return pub_event_dropped; - case eCAL::ePublisherEvent::update_connection: return pub_event_update_connection; - default: return pub_event_none; + default: return pub_event_none; } } @@ -50,7 +49,6 @@ namespace case pub_event_connected: return eCAL::ePublisherEvent::connected; case pub_event_disconnected: return eCAL::ePublisherEvent::disconnected; case pub_event_dropped: return eCAL::ePublisherEvent::dropped; - case pub_event_update_connection: return eCAL::ePublisherEvent::update_connection; default: return eCAL::ePublisherEvent::none; } } diff --git a/lang/c/core/src/ecal_subscriber_cimpl.cpp b/lang/c/core/src/ecal_subscriber_cimpl.cpp index c42342b526..cb6f50863d 100644 --- a/lang/c/core/src/ecal_subscriber_cimpl.cpp +++ b/lang/c/core/src/ecal_subscriber_cimpl.cpp @@ -39,9 +39,7 @@ namespace case eCAL::eSubscriberEvent::connected: return sub_event_connected; case eCAL::eSubscriberEvent::disconnected: return sub_event_disconnected; case eCAL::eSubscriberEvent::dropped: return sub_event_dropped; - case eCAL::eSubscriberEvent::corrupted: return sub_event_corrupted; - case eCAL::eSubscriberEvent::update_connection: return sub_event_update_connection; - default: return sub_event_none; + default: return sub_event_none; } } @@ -51,8 +49,6 @@ namespace case sub_event_connected: return eCAL::eSubscriberEvent::connected; case sub_event_disconnected: return eCAL::eSubscriberEvent::disconnected; case sub_event_dropped: return eCAL::eSubscriberEvent::dropped; - case sub_event_corrupted: return eCAL::eSubscriberEvent::corrupted; - case sub_event_update_connection: return eCAL::eSubscriberEvent::update_connection; default: return eCAL::eSubscriberEvent::none; } } diff --git a/serialization/protobuf/samples/pubsub/person_events_rec/src/person_events_rec.cpp b/serialization/protobuf/samples/pubsub/person_events_rec/src/person_events_rec.cpp index 338ac136bb..9b9db0accb 100644 --- a/serialization/protobuf/samples/pubsub/person_events_rec/src/person_events_rec.cpp +++ b/serialization/protobuf/samples/pubsub/person_events_rec/src/person_events_rec.cpp @@ -35,20 +35,10 @@ void OnEvent(const char* topic_name_, const struct eCAL::v5::SSubEventCallbackDa case eCAL::eSubscriberEvent::disconnected: std::cout << "event : " << "disconnected" << std::endl; break; + // not implemented yet case eCAL::eSubscriberEvent::dropped: std::cout << "event : " << "dropped (" << data_->clock << " messages)" << std::endl; break; - // not implemented yet - case eCAL::eSubscriberEvent::corrupted: - std::cout << "event : " << "corrupted" << std::endl; - break; - case eCAL::eSubscriberEvent::update_connection: - std::cout << "event : " << "update_connection" << std::endl; - std::cout << " topic_id : " << data_->tid << std::endl; - std::cout << " topic_encoding : " << data_->tdatatype.encoding << std::endl; - std::cout << " topic_type : " << data_->tdatatype.name << std::endl; - //std::cout << " topic_desc : " << data_->tdesc << std::endl; - break; default: std::cout << "event : " << "unknown" << std::endl; break; @@ -72,8 +62,6 @@ int main() sub.AddEventCallback(eCAL::eSubscriberEvent::connected, evt_callback); sub.AddEventCallback(eCAL::eSubscriberEvent::disconnected, evt_callback); sub.AddEventCallback(eCAL::eSubscriberEvent::dropped, evt_callback); - sub.AddEventCallback(eCAL::eSubscriberEvent::corrupted, evt_callback); - sub.AddEventCallback(eCAL::eSubscriberEvent::update_connection, evt_callback); // start application and wait for events std::cout << "Please start 'person_snd_events sample." << std::endl << std::endl; diff --git a/serialization/protobuf/samples/pubsub/person_events_snd/src/person_events_snd.cpp b/serialization/protobuf/samples/pubsub/person_events_snd/src/person_events_snd.cpp index 6e41f3a143..a0094cd022 100644 --- a/serialization/protobuf/samples/pubsub/person_events_snd/src/person_events_snd.cpp +++ b/serialization/protobuf/samples/pubsub/person_events_snd/src/person_events_snd.cpp @@ -39,15 +39,8 @@ void OnEvent(const char* topic_name_, const struct eCAL::v5::SPubEventCallbackDa case eCAL::ePublisherEvent::dropped: std::cout << "event : " << "dropped" << std::endl; break; - case eCAL::ePublisherEvent::update_connection: - std::cout << "event : " << "update_connection" << std::endl; - std::cout << " topic_id : " << data_->tid << std::endl; - std::cout << " topic_encoding : " << data_->tdatatype.encoding << std::endl; - std::cout << " topic_type : " << data_->tdatatype.name << std::endl; - //std::cout << " topic_desc : " << data_->tdesc << std::endl; - break; default: - std::cout << "event : " << "unknown" << std::endl; + std::cout << "event : " << "unknown" << std::endl; break; } std::cout << std::endl; @@ -66,9 +59,8 @@ int main() // add event callback function (_1 = topic_name, _2 = event data struct) auto evt_callback = std::bind(OnEvent, std::placeholders::_1, std::placeholders::_2); - pub.AddEventCallback(eCAL::ePublisherEvent::connected, evt_callback); - pub.AddEventCallback(eCAL::ePublisherEvent::disconnected, evt_callback); - pub.AddEventCallback(eCAL::ePublisherEvent::update_connection, evt_callback); + pub.AddEventCallback(eCAL::ePublisherEvent::connected, evt_callback); + pub.AddEventCallback(eCAL::ePublisherEvent::disconnected, evt_callback); // generate a class instance of Person pb::People::Person person; From 8ed7e0df987600fc6af25d80e0f9bebc26ed811b Mon Sep 17 00:00:00 2001 From: rex-schilasky <49162693+rex-schilasky@users.noreply.github.com> Date: Mon, 20 Jan 2025 14:58:41 +0100 Subject: [PATCH 2/3] c language interface fixed --- lang/python/core/src/ecal_clang.cpp | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/lang/python/core/src/ecal_clang.cpp b/lang/python/core/src/ecal_clang.cpp index 01ff885a0f..f6ab4c3b41 100644 --- a/lang/python/core/src/ecal_clang.cpp +++ b/lang/python/core/src/ecal_clang.cpp @@ -80,8 +80,7 @@ namespace case eCAL::ePublisherEvent::connected: return pub_event_connected; case eCAL::ePublisherEvent::disconnected: return pub_event_disconnected; case eCAL::ePublisherEvent::dropped: return pub_event_dropped; - case eCAL::ePublisherEvent::update_connection: return pub_event_update_connection; - default: return pub_event_none; + default: return pub_event_none; } } @@ -91,7 +90,6 @@ namespace case pub_event_connected: return eCAL::ePublisherEvent::connected; case pub_event_disconnected: return eCAL::ePublisherEvent::disconnected; case pub_event_dropped: return eCAL::ePublisherEvent::dropped; - case pub_event_update_connection: return eCAL::ePublisherEvent::update_connection; default: return eCAL::ePublisherEvent::none; } } @@ -102,9 +100,7 @@ namespace case eCAL::eSubscriberEvent::connected: return sub_event_connected; case eCAL::eSubscriberEvent::disconnected: return sub_event_disconnected; case eCAL::eSubscriberEvent::dropped: return sub_event_dropped; - case eCAL::eSubscriberEvent::corrupted: return sub_event_corrupted; - case eCAL::eSubscriberEvent::update_connection: return sub_event_update_connection; - default: return sub_event_none; + default: return sub_event_none; } } @@ -114,8 +110,6 @@ namespace case sub_event_connected: return eCAL::eSubscriberEvent::connected; case sub_event_disconnected: return eCAL::eSubscriberEvent::disconnected; case sub_event_dropped: return eCAL::eSubscriberEvent::dropped; - case sub_event_corrupted: return eCAL::eSubscriberEvent::corrupted; - case sub_event_update_connection: return eCAL::eSubscriberEvent::update_connection; default: return eCAL::eSubscriberEvent::none; } } From 98fb84c267bd7f778dc6bbd7851b18c997e4084f Mon Sep 17 00:00:00 2001 From: rex-schilasky <49162693+rex-schilasky@users.noreply.github.com> Date: Mon, 20 Jan 2025 15:42:31 +0100 Subject: [PATCH 3/3] ecal_core_c test failed on my machine because of missing definition ECAL_OS_WINDOWS (compare process_name/unit_name failed core_test.cpp line 127) --- lang/c/tests/core_test/src/core_test.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/lang/c/tests/core_test/src/core_test.cpp b/lang/c/tests/core_test/src/core_test.cpp index 9d781d6323..99f75cc3d9 100644 --- a/lang/c/tests/core_test/src/core_test.cpp +++ b/lang/c/tests/core_test/src/core_test.cpp @@ -20,6 +20,7 @@ #include #include #include +#include #include