Skip to content

Commit fb841b9

Browse files
authored
Refactor IStatusQueryable and make monitor service interfaces private (#4651)
* Refs #20739: Make monitor service interfaces private (except IProxyQueryable) Signed-off-by: Mario Dominguez <mariodominguez@eprosima.com> * Refs #20739: Replace tabs with spaces in monitorservice_types.idl Signed-off-by: Mario Dominguez <mariodominguez@eprosima.com> * Refs #20739: Refactor include and src files Signed-off-by: Mario Dominguez <mariodominguez@eprosima.com> * Refs #20739: Refactor tests Signed-off-by: Mario Dominguez <mariodominguez@eprosima.com> * Refs #20739: Apply suggestion regarding asserts Signed-off-by: Mario Dominguez <mariodominguez@eprosima.com> * Refs 20739: Rev 2 changes Signed-off-by: Mario Dominguez <mariodominguez@eprosima.com> * Refs 20739: Linter Signed-off-by: Mario Dominguez <mariodominguez@eprosima.com> * Refs 20739: Rev 3 changes Signed-off-by: Mario Dominguez <mariodominguez@eprosima.com> * Refs #20739: Remove status assert Signed-off-by: Mario Dominguez <mariodominguez@eprosima.com> * Refs #20739: Comment typo Signed-off-by: Mario Dominguez <mariodominguez@eprosima.com> --------- Signed-off-by: Mario Dominguez <mariodominguez@eprosima.com>
1 parent f1373f9 commit fb841b9

30 files changed

Lines changed: 309 additions & 330 deletions

File tree

include/fastdds/rtps/builtin/discovery/participant/PDP.h

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@
3333
#include <fastdds/rtps/participant/ParticipantDiscoveryInfo.h>
3434
#include <fastdds/rtps/reader/ReaderDiscoveryInfo.h>
3535
#include <fastdds/rtps/writer/WriterDiscoveryInfo.h>
36-
#include <fastdds/statistics/rtps/monitor_service/interfaces/IProxyObserver.hpp>
3736
#include <fastdds/statistics/rtps/monitor_service/interfaces/IProxyQueryable.hpp>
3837
#include <fastrtps/qos/QosPolicies.h>
3938
#include <fastrtps/utils/collections/ResourceLimitedVector.hpp>
@@ -42,6 +41,14 @@
4241
namespace eprosima {
4342

4443
namespace fastdds {
44+
namespace statistics {
45+
namespace rtps {
46+
47+
struct IProxyObserver;
48+
49+
} // namespace rtps
50+
} // namespace statistics
51+
4552
namespace rtps {
4653

4754
class PDPServerListener;

include/fastdds/rtps/reader/RTPSReader.h

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,7 @@
2929
#include <fastdds/rtps/Endpoint.h>
3030
#include <fastdds/rtps/history/ReaderHistory.h>
3131
#include <fastdds/rtps/interfaces/IReaderDataFilter.hpp>
32-
#ifdef FASTDDS_STATISTICS
33-
#include <fastdds/statistics/rtps/monitor_service/interfaces/IConnectionsQueryable.hpp>
34-
#include <fastdds/statistics/rtps/monitor_service/interfaces/IConnectionsObserver.hpp>
35-
#endif // ifdef FASTDDS_STATISTICS
32+
#include <fastdds/statistics/rtps/monitor_service/connections_fwd.hpp>
3633
#include <fastdds/statistics/rtps/StatisticsCommon.hpp>
3734
#include <fastrtps/qos/LivelinessChangedStatus.h>
3835
#include <fastrtps/utils/TimedConditionVariable.hpp>

include/fastdds/rtps/writer/RTPSWriter.h

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,7 @@
3333
#include <fastdds/rtps/Endpoint.h>
3434
#include <fastdds/rtps/interfaces/IReaderDataFilter.hpp>
3535
#include <fastdds/rtps/messages/RTPSMessageGroup.h>
36-
#ifdef FASTDDS_STATISTICS
37-
#include <fastdds/statistics/rtps/monitor_service/interfaces/IConnectionsObserver.hpp>
38-
#include <fastdds/statistics/rtps/monitor_service/interfaces/IConnectionsQueryable.hpp>
39-
#endif // ifdef FASTDDS_STATISTICS
36+
#include <fastdds/statistics/rtps/monitor_service/connections_fwd.hpp>
4037
#include <fastdds/statistics/rtps/StatisticsCommon.hpp>
4138
#include <fastrtps/qos/LivelinessLostStatus.h>
4239

include/fastdds/statistics/monitorservice_types.idl

Lines changed: 93 additions & 93 deletions
Original file line numberDiff line numberDiff line change
@@ -22,99 +22,99 @@ module eprosima {
2222
module fastdds {
2323
module statistics {
2424

25-
enum ConnectionMode
26-
{
27-
DATA_SHARING,
28-
INTRAPROCESS,
29-
TRANSPORT
30-
};
31-
32-
struct Connection
33-
{
34-
ConnectionMode mode;
35-
detail::GUID_s guid;
36-
sequence<detail::Locator_s> announced_locators;
37-
sequence<detail::Locator_s> used_locators;
38-
};
39-
40-
struct QosPolicyCount_s
41-
{
42-
unsigned long policy_id;
43-
unsigned long count;
44-
};
45-
46-
struct BaseStatus_s
47-
{
48-
unsigned long total_count;
49-
};
50-
51-
typedef sequence<QosPolicyCount_s> QosPolicyCountSeq_s;
52-
53-
struct IncompatibleQoSStatus_s
54-
{
55-
unsigned long total_count;
56-
unsigned long last_policy_id;
57-
QosPolicyCountSeq_s policies;
58-
};
59-
60-
struct LivelinessChangedStatus_s
61-
{
62-
unsigned long alive_count;
63-
unsigned long not_alive_count;
64-
octet last_publication_handle[16];
65-
};
66-
67-
struct DeadlineMissedStatus_s
68-
{
69-
unsigned long total_count;
70-
octet last_instance_handle[16];
71-
};
72-
73-
typedef BaseStatus_s LivelinessLostStatus_s;
74-
typedef BaseStatus_s InconsistentTopicStatus_s;
75-
typedef BaseStatus_s SampleLostStatus_s;
76-
77-
enum StatusKind
78-
{
79-
PROXY,
80-
CONNECTION_LIST,
81-
INCOMPATIBLE_QOS,
82-
INCONSISTENT_TOPIC,
83-
LIVELINESS_LOST,
84-
LIVELINESS_CHANGED,
85-
DEADLINE_MISSED,
86-
SAMPLE_LOST,
87-
STATUSES_SIZE
88-
};
89-
90-
union MonitorServiceData switch(StatusKind)
91-
{
92-
case PROXY:
93-
sequence<octet> entity_proxy;
94-
case CONNECTION_LIST:
95-
sequence<Connection> connection_list;
96-
case INCOMPATIBLE_QOS:
97-
IncompatibleQoSStatus_s incompatible_qos_status;
98-
case INCONSISTENT_TOPIC:
99-
InconsistentTopicStatus_s inconsistent_topic_status;
100-
case LIVELINESS_LOST:
101-
LivelinessLostStatus_s liveliness_lost_status;
102-
case LIVELINESS_CHANGED:
103-
LivelinessChangedStatus_s liveliness_changed_status;
104-
case DEADLINE_MISSED:
105-
DeadlineMissedStatus_s deadline_missed_status;
106-
case SAMPLE_LOST:
107-
SampleLostStatus_s sample_lost_status;
108-
case STATUSES_SIZE:
109-
octet statuses_size;
110-
};
111-
112-
struct MonitorServiceStatusData
113-
{
114-
@Key detail::GUID_s local_entity;
115-
@Key StatusKind status_kind;
116-
MonitorServiceData value;
117-
};
25+
enum ConnectionMode
26+
{
27+
DATA_SHARING,
28+
INTRAPROCESS,
29+
TRANSPORT
30+
};
31+
32+
struct Connection
33+
{
34+
ConnectionMode mode;
35+
detail::GUID_s guid;
36+
sequence<detail::Locator_s> announced_locators;
37+
sequence<detail::Locator_s> used_locators;
38+
};
39+
40+
struct QosPolicyCount_s
41+
{
42+
unsigned long policy_id;
43+
unsigned long count;
44+
};
45+
46+
struct BaseStatus_s
47+
{
48+
unsigned long total_count;
49+
};
50+
51+
typedef sequence<QosPolicyCount_s> QosPolicyCountSeq_s;
52+
53+
struct IncompatibleQoSStatus_s
54+
{
55+
unsigned long total_count;
56+
unsigned long last_policy_id;
57+
QosPolicyCountSeq_s policies;
58+
};
59+
60+
struct LivelinessChangedStatus_s
61+
{
62+
unsigned long alive_count;
63+
unsigned long not_alive_count;
64+
octet last_publication_handle[16];
65+
};
66+
67+
struct DeadlineMissedStatus_s
68+
{
69+
unsigned long total_count;
70+
octet last_instance_handle[16];
71+
};
72+
73+
typedef BaseStatus_s LivelinessLostStatus_s;
74+
typedef BaseStatus_s InconsistentTopicStatus_s;
75+
typedef BaseStatus_s SampleLostStatus_s;
76+
77+
enum StatusKind
78+
{
79+
PROXY,
80+
CONNECTION_LIST,
81+
INCOMPATIBLE_QOS,
82+
INCONSISTENT_TOPIC,
83+
LIVELINESS_LOST,
84+
LIVELINESS_CHANGED,
85+
DEADLINE_MISSED,
86+
SAMPLE_LOST,
87+
STATUSES_SIZE
88+
};
89+
90+
union MonitorServiceData switch(StatusKind)
91+
{
92+
case PROXY:
93+
sequence<octet> entity_proxy;
94+
case CONNECTION_LIST:
95+
sequence<Connection> connection_list;
96+
case INCOMPATIBLE_QOS:
97+
IncompatibleQoSStatus_s incompatible_qos_status;
98+
case INCONSISTENT_TOPIC:
99+
InconsistentTopicStatus_s inconsistent_topic_status;
100+
case LIVELINESS_LOST:
101+
LivelinessLostStatus_s liveliness_lost_status;
102+
case LIVELINESS_CHANGED:
103+
LivelinessChangedStatus_s liveliness_changed_status;
104+
case DEADLINE_MISSED:
105+
DeadlineMissedStatus_s deadline_missed_status;
106+
case SAMPLE_LOST:
107+
SampleLostStatus_s sample_lost_status;
108+
case STATUSES_SIZE:
109+
octet statuses_size;
110+
};
111+
112+
struct MonitorServiceStatusData
113+
{
114+
@Key detail::GUID_s local_entity;
115+
@Key StatusKind status_kind;
116+
MonitorServiceData value;
117+
};
118118

119119
}; // namespace statisitcs
120120
}; // namespace fastdds
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
// Copyright 2024 Proyectos y Sistemas de Mantenimiento SL (eProsima).
2+
//
3+
// Licensed under the Apache License, Version 2.0 (the "License");
4+
// you may not use this file except in compliance with the License.
5+
// You may obtain a copy of the License at
6+
//
7+
// http://www.apache.org/licenses/LICENSE-2.0
8+
//
9+
// Unless required by applicable law or agreed to in writing, software
10+
// distributed under the License is distributed on an "AS IS" BASIS,
11+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
// See the License for the specific language governing permissions and
13+
// limitations under the License.
14+
15+
/**
16+
* @file connections_fwd.hpp
17+
*
18+
*/
19+
20+
#ifndef _FASTDDS_STATISTICS_MONITOR_SERVICE_CONNECTION_FWD_HPP_
21+
#define _FASTDDS_STATISTICS_MONITOR_SERVICE_CONNECTION_FWD_HPP_
22+
23+
namespace eprosima {
24+
namespace fastdds {
25+
namespace statistics {
26+
27+
class Connection;
28+
29+
namespace rtps {
30+
31+
using ConnectionList = std::vector<eprosima::fastdds::statistics::Connection>;
32+
33+
} // rtps
34+
} // statistics
35+
} // fastdds
36+
} // eprosima
37+
38+
#endif // _FASTDDS_STATISTICS_MONITOR_SERVICE_CONNECTION_FWD_HPP_

src/cpp/fastdds/publisher/PublisherImpl.cpp

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -670,8 +670,7 @@ PublisherListener* PublisherImpl::get_listener_for(
670670

671671
#ifdef FASTDDS_STATISTICS
672672
bool PublisherImpl::get_monitoring_status(
673-
const uint32_t& status_id,
674-
statistics::rtps::DDSEntityStatus*& status,
673+
statistics::MonitorServiceData& status,
675674
const fastrtps::rtps::GUID_t& entity_guid)
676675
{
677676
bool ret = false;
@@ -682,11 +681,21 @@ bool PublisherImpl::get_monitoring_status(
682681
{
683682
if (writer->guid() == entity_guid)
684683
{
685-
switch (status_id)
684+
switch (status._d())
686685
{
687686
case statistics::INCOMPATIBLE_QOS:
688687
{
689-
writer->get_offered_incompatible_qos_status(*static_cast<OfferedIncompatibleQosStatus*>(status));
688+
OfferedIncompatibleQosStatus incompatible_qos_status;
689+
writer->get_offered_incompatible_qos_status(incompatible_qos_status);
690+
status.incompatible_qos_status().total_count(incompatible_qos_status.total_count);
691+
status.incompatible_qos_status().last_policy_id(incompatible_qos_status.last_policy_id);
692+
for (auto& qos : incompatible_qos_status.policies)
693+
{
694+
statistics::QosPolicyCount_s count;
695+
count.count(qos.count);
696+
count.policy_id(qos.policy_id);
697+
status.incompatible_qos_status().policies().push_back(count);
698+
}
690699
ret = true;
691700
break;
692701
}
@@ -699,19 +708,27 @@ bool PublisherImpl::get_monitoring_status(
699708
}*/
700709
case statistics::LIVELINESS_LOST:
701710
{
702-
writer->get_liveliness_lost_status(*static_cast<LivelinessLostStatus*>(status));
711+
LivelinessLostStatus liveliness_lost_status;
712+
writer->get_liveliness_lost_status(liveliness_lost_status);
713+
status.liveliness_lost_status().total_count(liveliness_lost_status.total_count);
703714
ret = true;
704715
break;
705716
}
706717
case statistics::DEADLINE_MISSED:
707718
{
708-
writer->get_offered_deadline_missed_status(*static_cast<DeadlineMissedStatus*>(status));
719+
DeadlineMissedStatus deadline_missed_status;
720+
writer->get_offered_deadline_missed_status(deadline_missed_status);
721+
status.deadline_missed_status().total_count(deadline_missed_status.total_count);
722+
std::memcpy(
723+
status.deadline_missed_status().last_instance_handle().data(),
724+
deadline_missed_status.last_instance_handle.value,
725+
16);
709726
ret = true;
710727
break;
711728
}
712729
default:
713730
{
714-
EPROSIMA_LOG_ERROR(PUBLISHER, "Queried status not available for this entity " << status_id);
731+
EPROSIMA_LOG_ERROR(PUBLISHER, "Queried status not available for this entity " << status._d());
715732
break;
716733
}
717734
}

src/cpp/fastdds/publisher/PublisherImpl.hpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636
#include <map>
3737

3838
#ifdef FASTDDS_STATISTICS
39-
#include <fastdds/statistics/rtps/monitor_service/interfaces/IStatusQueryable.hpp>
39+
#include <statistics/rtps/monitor-service/interfaces/IStatusQueryable.hpp>
4040
#endif // ifdef FASTDDS_STATISTICS
4141

4242
using eprosima::fastrtps::types::ReturnCode_t;
@@ -206,8 +206,7 @@ class PublisherImpl
206206

207207
#ifdef FASTDDS_STATISTICS
208208
bool get_monitoring_status(
209-
const uint32_t& status_id,
210-
statistics::rtps::DDSEntityStatus*& status,
209+
statistics::MonitorServiceData& status,
211210
const fastrtps::rtps::GUID_t& entity_guid);
212211
#endif //FASTDDS_STATISTICS
213212

0 commit comments

Comments
 (0)