Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[core] eCAL sample completely internal, only SEntityId public. #1712

Merged
merged 1 commit into from
Aug 20, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 8 additions & 8 deletions ecal/core/include/ecal/ecal_types.h
Original file line number Diff line number Diff line change
Expand Up @@ -85,19 +85,19 @@ namespace eCAL

namespace Registration
{
struct SampleIdentifier
struct SEntityId
{
std::string entity_id; // unique id within that process
int32_t process_id = 0; // process id which produced the sample
std::string host_name; // host which produced the sample

bool operator==(const SampleIdentifier& other) const {
bool operator==(const SEntityId& other) const {
return entity_id == other.entity_id &&
process_id == other.process_id &&
host_name == other.host_name;
}

bool operator<(const SampleIdentifier& other) const
bool operator<(const SEntityId& other) const
{
return std::tie(process_id, entity_id, host_name)
< std::tie(other.process_id, other.entity_id, other.host_name);
Expand All @@ -106,8 +106,8 @@ namespace eCAL

struct STopicId
{
Registration::SampleIdentifier topic_id;
std::string topic_name;
SEntityId topic_id;
std::string topic_name;

bool operator<(const STopicId& other) const
{
Expand All @@ -117,9 +117,9 @@ namespace eCAL

struct SServiceId
{
Registration::SampleIdentifier service_id;
std::string service_name;
std::string method_name;
SEntityId service_id;
std::string service_name;
std::string method_name;

bool operator<(const SServiceId& other) const
{
Expand Down
16 changes: 12 additions & 4 deletions ecal/core/src/ecal_descgate.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,14 @@ namespace
if(is_producer_) quality |= eCAL::Registration::DescQualityFlags::INFO_COMES_FROM_PRODUCER;
return quality;
}

eCAL::Registration::SEntityId ConvertToEntityId(const eCAL::Registration::SampleIdentifier& sample_identifier)
{
eCAL::Registration::SEntityId id{ sample_identifier.entity_id, sample_identifier.process_id, sample_identifier.host_name};
return id;
}


}

namespace eCAL
Expand Down Expand Up @@ -211,7 +219,7 @@ namespace eCAL
const SDataTypeInformation& topic_info_,
const Registration::DescQualityFlags topic_quality_)
{
const auto topic_info_key = Registration::STopicId{ topic_id_, topic_name_ };
const auto topic_info_key = Registration::STopicId{ ConvertToEntityId(topic_id_), topic_name_ };

Registration::SQualityTopicInfo topic_quality_info;
topic_quality_info.info = topic_info_;
Expand All @@ -226,7 +234,7 @@ namespace eCAL
const std::string& topic_name_)
{
const std::unique_lock<std::mutex> lock(topic_info_map_.mtx);
topic_info_map_.map.erase(Registration::STopicId{ topic_id_ , topic_name_});
topic_info_map_.map.erase(Registration::STopicId{ ConvertToEntityId(topic_id_) , topic_name_});
}

void CDescGate::ApplyServiceDescription(SQualityServiceIdMap& service_method_info_map_,
Expand All @@ -238,7 +246,7 @@ namespace eCAL
const Registration::DescQualityFlags request_type_quality_,
const Registration::DescQualityFlags response_type_quality_)
{
const auto service_method_info_key = Registration::SServiceId{ service_id_, service_name_, method_name_};
const auto service_method_info_key = Registration::SServiceId{ ConvertToEntityId(service_id_), service_name_, method_name_};

Registration::SQualityServiceInfo service_quality_info;
service_quality_info.info.request_type = request_type_information_;
Expand All @@ -262,7 +270,7 @@ namespace eCAL
{
const auto service_method_info_key = service_it.first;
if ((service_method_info_key.service_name == service_name_)
&& (service_method_info_key.service_id == service_id_))
&& (service_method_info_key.service_id == ConvertToEntityId(service_id_)))
{
service_method_info_keys_to_remove.push_back(service_method_info_key);
}
Expand Down
19 changes: 19 additions & 0 deletions ecal/core/src/serialization/ecal_struct_sample_registration.h
Original file line number Diff line number Diff line change
Expand Up @@ -235,6 +235,25 @@ namespace eCAL
}
};

struct SampleIdentifier
{
std::string entity_id; // unique id within that process
int32_t process_id = 0; // process id which produced the sample
std::string host_name; // host which produced the sample

bool operator==(const SampleIdentifier& other) const {
return entity_id == other.entity_id &&
process_id == other.process_id &&
host_name == other.host_name;
}

bool operator<(const SampleIdentifier& other) const
{
return std::tie(process_id, entity_id, host_name)
< std::tie(other.process_id, other.entity_id, other.host_name);
}
};

// Registration sample
struct Sample
{
Expand Down
Loading