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

[20739] Refactor IStatusQueryable and make monitor service interfaces private #4651

Merged
merged 10 commits into from
Apr 17, 2024
4 changes: 2 additions & 2 deletions src/cpp/fastdds/subscriber/SubscriberImpl.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -23,16 +23,16 @@

#include <fastrtps/attributes/SubscriberAttributes.h>

#include <fastdds/dds/core/status/StatusMask.hpp>
#include <fastdds/dds/subscriber/DataReaderListener.hpp>
#include <fastdds/dds/subscriber/qos/DataReaderQos.hpp>
#include <fastdds/dds/subscriber/qos/SubscriberQos.hpp>
#include <fastdds/dds/core/status/StatusMask.hpp>
#include <fastrtps/types/TypesBase.h>

#include <statistics/rtps/monitor-service/interfaces/IStatusQueryable.hpp>

#include <mutex>
#include <map>
#include <mutex>
JLBuenoLopez marked this conversation as resolved.
Show resolved Hide resolved

using eprosima::fastrtps::types::ReturnCode_t;

Expand Down
30 changes: 17 additions & 13 deletions src/cpp/statistics/rtps/monitor-service/MonitorService.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -262,73 +262,77 @@ bool MonitorService::write_status(
status_data.local_entity(to_statistics_type({local_participant_guid_.guidPrefix, entity_id}));
GUID_t local_entity_guid = {local_participant_guid_.guidPrefix, entity_id};
JLBuenoLopez marked this conversation as resolved.
Show resolved Hide resolved

bool status_retrieved = true;
switch (i)
{
case PROXY:
{
CDRMessage_t msg;
//! Depending on the entity type [Participant, Writer, Reader]
//! the size will be accordingly calculated
assert(proxy_queryable_->get_serialized_proxy(local_entity_guid, &msg));
status_retrieved = proxy_queryable_->get_serialized_proxy(local_entity_guid,&msg);
data.entity_proxy().assign(msg.buffer, msg.buffer + msg.length);
break;
}
case CONNECTION_LIST:
{
std::vector<statistics::Connection> conns;
assert(conns_queryable_->get_entity_connections(local_entity_guid, conns));
status_retrieved = conns_queryable_->get_entity_connections(local_entity_guid,conns);
data.connection_list(conns);
break;
}
case INCOMPATIBLE_QOS:
{
data.incompatible_qos_status(IncompatibleQoSStatus_s{});
assert(status_queryable_.get_monitoring_status(local_entity_guid, data));
status_retrieved = status_queryable_.get_monitoring_status(local_entity_guid, data);
break;
}
//Not triggered for the moment
case INCONSISTENT_TOPIC:
{
EPROSIMA_LOG_ERROR(MONITOR_SERVICE, "Inconsistent topic status not supported yet");
assert(false);
(void)local_entity_guid;
JLBuenoLopez marked this conversation as resolved.
Show resolved Hide resolved
break;
}
case LIVELINESS_LOST:
{
data.liveliness_lost_status(LivelinessLostStatus_s{});
assert(status_queryable_.get_monitoring_status(local_entity_guid, data));
status_retrieved = status_queryable_.get_monitoring_status(local_entity_guid, data);
break;
}
case LIVELINESS_CHANGED:
{
data.liveliness_changed_status(LivelinessChangedStatus_s{});
assert(status_queryable_.get_monitoring_status(local_entity_guid, data));
status_retrieved = status_queryable_.get_monitoring_status(local_entity_guid, data);
break;
}
case DEADLINE_MISSED:
{
data.deadline_missed_status(DeadlineMissedStatus_s{});
assert(status_queryable_.get_monitoring_status(local_entity_guid, data));
status_retrieved = status_queryable_.get_monitoring_status(local_entity_guid, data);
break;
}
case SAMPLE_LOST:
{
data.sample_lost_status(SampleLostStatus_s{});
assert(status_queryable_.get_monitoring_status(local_entity_guid, data));
status_retrieved = status_queryable_.get_monitoring_status(local_entity_guid, data);
break;
}
default:
{
EPROSIMA_LOG_ERROR(MONITOR_SERVICE, "Referring to an unknown status");
assert(false);
(void)local_entity_guid;
break;
}
}

status_data.status_kind((StatusKind)i);
status_data.value(data);
add_change(status_data, false);

assert(status_retrieved);
if (status_retrieved)
JLBuenoLopez marked this conversation as resolved.
Show resolved Hide resolved
{
status_data.status_kind((StatusKind)i);
status_data.value(data);
add_change(status_data, false);
}
}
}
}
Expand Down
Loading