Skip to content

Commit 34ab08a

Browse files
richiwareEduPonz
andauthored
Full DDS API (#12)
* Refs #13384. Test DomainParticipant::create_publisher Signed-off-by: Ricardo González Moreno <ricardo@richiware.dev> * Refs #13384. Add DomainParticipant::create_subsriber Signed-off-by: Ricardo González Moreno <ricardo@richiware.dev> * Refs #13980. Add DomainParticipant::create_topic Signed-off-by: Ricardo González Moreno <ricardo@richiware.dev> * Refs #13980. Add DomainParticipant::set_listener Signed-off-by: Ricardo González Moreno <ricardo@richiware.dev> * Refs #13980. Add DomainParticipant::find_topic Signed-off-by: Ricardo González Moreno <ricardo@richiware.dev> * Refs #13980. Add DomainParticipant::ignore_* Signed-off-by: Ricardo González Moreno <ricardo@richiware.dev> * Refs #13384. Add DomainParticipant::set_qos Signed-off-by: Ricardo González Moreno <ricardo@richiware.dev> * Refs #13384. Add DomainParticipant::enable Signed-off-by: Ricardo González Moreno <ricardo@richiware.dev> * Refs #13384. Add DomainParticipant::delete_contained_entities Signed-off-by: Ricardo González Moreno <ricardo@richiware.dev> * Refs #13384. Add DomainParticipant::get_participant_names Signed-off-by: Ricardo González Moreno <ricardo@richiware.dev> * Refs #13384. Add DomainParticipant::contains_entity Signed-off-by: Ricardo González Moreno <ricardo@richiware.dev> * Refs #13384. Fix test_qos Signed-off-by: Ricardo González Moreno <ricardo@richiware.dev> * Refs #13384. Initial publisher subscriber api Signed-off-by: Ricardo González Moreno <ricardo@richiware.dev> * Refs #13384. Add Publisher::set_listener Signed-off-by: Ricardo González Moreno <ricardo@richiware.dev> * Refs #13384. Add Publisher::create_datawriter Signed-off-by: Ricardo González Moreno <ricardo@richiware.dev> * Refs #13384. Add Publisher::lookup_datawriter Signed-off-by: Ricardo González Moreno <ricardo@richiware.dev> * Refs #13384. Add Publisher::suspend_publications Signed-off-by: Ricardo González Moreno <ricardo@richiware.dev> * Refs #13384. Add Publisher::wait_for_acknowledgments Signed-off-by: Ricardo González Moreno <ricardo@richiware.dev> * Refs #13384. Add Publisher::delete_contained_entities Signed-off-by: Ricardo González Moreno <ricardo@richiware.dev> * Refs #13384. Add Publisher::get_instance_handle Signed-off-by: Ricardo González Moreno <ricardo@richiware.dev> * Refs #13384. Add Publisher::get_datawriters Signed-off-by: Ricardo González Moreno <ricardo@richiware.dev> * Refs #13384. Add waitsets Signed-off-by: Ricardo González Moreno <ricardo@richiware.dev> * Refs #13384. Add DataWriter::write Signed-off-by: Ricardo González Moreno <ricardo@richiware.dev> * Refs #13384. Add DataWriter::register_instance. Signed-off-by: Ricardo González Moreno <ricardo@richiware.dev> * Refs #13384. Add DataWriter::get_key_value Signed-off-by: Ricardo González Moreno <ricardo@richiware.dev> * Refs #13384. Add DataWriter::lookup_instance Signed-off-by: Ricardo González Moreno <ricardo@richiware.dev> * Refs #13384. Add DataWriter::get_instance_handle Signed-off-by: Ricardo González Moreno <ricardo@richiware.dev> * Refs #13384. Add DataWriter::get_type Signed-off-by: Ricardo González Moreno <ricardo@richiware.dev> * Refs #13384. Add DataWriter::wait_for_acknowledgments Signed-off-by: Ricardo González Moreno <ricardo@richiware.dev> * Refs #13384. Add DataWriter::get_offered_deadline_missed_status Signed-off-by: Ricardo González Moreno <ricardo@richiware.dev> * Res #13384. Add DataWriter::get_offered_incompatible_qos_status Signed-off-by: Ricardo González Moreno <ricardo@richiware.dev> * Refs #13384. Add DataWriter::get_publication_matched_status Signed-off-by: Ricardo González Moreno <ricardo@richiware.dev> * Refs #13384. Add DataWriter::set_listener Signed-off-by: Ricardo González Moreno <ricardo@richiware.dev> * Refs #13384. Add DataWriter::dispose Signed-off-by: Ricardo González Moreno <ricardo@richiware.dev> * Refs #13384. Add DataWriter::get_liveliness_lost_status Signed-off-by: Ricardo González Moreno <ricardo@richiware.dev> * Refs #13384. Add DataWriter::get_publisher Signed-off-by: Ricardo González Moreno <ricardo@richiware.dev> * Refs #13384. Add DataWrter::assert_liveliness Signed-off-by: Ricardo González Moreno <ricardo@richiware.dev> * Refs #13384. Add DataWriter::get_matched_subscription_data Signed-off-by: Ricardo González Moreno <ricardo@richiware.dev> * Refs #13384. Add DataWriter::get_matched_subscriptions Signed-off-by: Ricardo González Moreno <ricardo@richiware.dev> * Refs #13384. Add DataWriter::clear_history Signed-off-by: Ricardo González Moreno <ricardo@richiware.dev> * Refs #13384. Add DataWriter::get_sending_locators Signed-off-by: Ricardo González Moreno <ricardo@richiware.dev> * Refs #13384. Add DataReader::wait_for_unread_message Signed-off-by: Ricardo González Moreno <ricardo@richiware.dev> * Refs #13384. Add DataReader::wait_for_historical_data Signed-off-by: Ricardo González Moreno <ricardo@richiware.dev> * Refs #13384. Fix test failure Signed-off-by: Ricardo González Moreno <ricardo@richiware.dev> * Refs #13384: Remove comment Signed-off-by: Ricardo González Moreno <ricardo@richiware.dev> * Refs #13384. Add DataReader::read_next_sample Signed-off-by: Ricardo González Moreno <ricardo@richiware.dev> * Refs #13384. Add DataReader::take_next_sample Signed-off-by: Ricardo González Moreno <ricardo@richiware.dev> * Refs #13384. Add DataReader::get_key_value Signed-off-by: Ricardo González Moreno <ricardo@richiware.dev> * Refs #13384. Add DataReader::lookup_instance Signed-off-by: Ricardo González Moreno <ricardo@richiware.dev> * Refs #13384. Add DataReader::get_first_untaken_info Signed-off-by: Ricardo González Moreno <ricardo@richiware.dev> * Refs #13384. Add DataReader::get_unread_count Signed-off-by: Ricardo González Moreno <ricardo@richiware.dev> * Refs #13384. Add DataReader::get_instance_handle Signed-off-by: Ricardo González Moreno <ricardo@richiware.dev> * Refs #13384. Add DataReader::type Signed-off-by: Ricardo González Moreno <ricardo@richiware.dev> * Refs #13384. Add DataReader::set_listener Signed-off-by: Ricardo González Moreno <ricardo@richiware.dev> * Refs #13384. Add DataReader.get_liveliness_changed_status Signed-off-by: Ricardo González Moreno <ricardo@richiware.dev> * Refs #13384. Add DataReader::get_sample_lost_status Signed-off-by: Ricardo González Moreno <ricardo@richiware.dev> * Refs #13384. Add DataReader::get_sample_rejected_status Signed-off-by: Ricardo González Moreno <ricardo@richiware.dev> * Refs #13384. Add DataReader::get_subscription_matched_status Signed-off-by: Ricardo González Moreno <ricardo@richiware.dev> * Refs #13384. Add DataReader::get_requested_deadline_missed_status Signed-off-by: Ricardo González Moreno <ricardo@richiware.dev> * Refs #13384. Add DataReader::get_matched_publication_data Signed-off-by: Ricardo González Moreno <ricardo@richiware.dev> * Refs #13384. Add DataReader::get_matched_publications Signed-off-by: Ricardo González Moreno <ricardo@richiware.dev> * Refs #13384. Add DataReader::get_listening_locators Signed-off-by: Ricardo González Moreno <ricardo@richiware.dev> * Refs #13384. Add DataReader::get_subscriber Signed-off-by: Ricardo González Moreno <ricardo@richiware.dev> * Refs #13384. Add DataReader::is_sample_valid Signed-off-by: Ricardo González Moreno <ricardo@richiware.dev> * Refs 13384: Remove debugging traces Signed-off-by: Eduardo Ponz <eduardoponz@eprosima.com> * Refs 13384: Unify DomainParticipant StatusMask tests Signed-off-by: Eduardo Ponz <eduardoponz@eprosima.com> * Refs 13384: Simplify test_get_instance_handle Signed-off-by: Eduardo Ponz <eduardoponz@eprosima.com> * Refs 13384: Simplify test_get_set_listener Signed-off-by: Eduardo Ponz <eduardoponz@eprosima.com> * Refs 13384: Test delete_participant with contained entities Signed-off-by: Eduardo Ponz <eduardoponz@eprosima.com> * Refs 13384: Negative test for participant.contains_entity Signed-off-by: Eduardo Ponz <eduardoponz@eprosima.com> * Refs #13384. Refs #13384. Add DataReader::create_readcondition Signed-off-by: Ricardo González Moreno <ricardo@richiware.dev> * Refs #13384. Add DataReader::create_querycondition Signed-off-by: Ricardo González Moreno <ricardo@richiware.dev> * Refs 13384: Simplify test_create_and_delete_datawriter Signed-off-by: Eduardo Ponz <eduardoponz@eprosima.com> * Refs 13384: Test delete_publisher with contained entities Signed-off-by: Eduardo Ponz <eduardoponz@eprosima.com> * Refs 13384: Simplify test_get_instance_handle Signed-off-by: Eduardo Ponz <eduardoponz@eprosima.com> * Refs 13384: Check publisher.has_datawriters with no datawriters Signed-off-by: Eduardo Ponz <eduardoponz@eprosima.com> * Refs 13384: Simplify test_get_set_listener Signed-off-by: Eduardo Ponz <eduardoponz@eprosima.com> * Refs 13384: Simplify test_create_and_delete_datareader Signed-off-by: Eduardo Ponz <eduardoponz@eprosima.com> * Refs 13384: Test delete_subscriber with contained entities Signed-off-by: Eduardo Ponz <eduardoponz@eprosima.com> * Refs 13384: Check subscriber.has_datareaders with no datareaders Signed-off-by: Eduardo Ponz <eduardoponz@eprosima.com> * Refs #13384: Simplify test_get_instance_handle Signed-off-by: Eduardo Ponz <eduardoponz@eprosima.com> * Refs #13384: Simplify test_get_set_listener Signed-off-by: Eduardo Ponz <eduardoponz@eprosima.com> * Refs #13384: Commented check for delete_topic of a found topic Signed-off-by: Eduardo Ponz <eduardoponz@eprosima.com> * Refs #13384: datawriter test suggestions Signed-off-by: Eduardo Ponz <eduardoponz@eprosima.com> * Refs #13384. Fixes for windows Signed-off-by: Ricardo González Moreno <ricardo@richiware.dev> * Refs #13384. Quick fix Signed-off-by: Ricardo González Moreno <ricardo@richiware.dev> * Refs #13384: Apply suggestions Signed-off-by: Eduardo Ponz <eduardoponz@eprosima.com> * Refs #13384: Fix tests with statistics is enabled Signed-off-by: Eduardo Ponz <eduardoponz@eprosima.com> * Refs #13384: Fix teke_next_sample test Signed-off-by: Eduardo Ponz <eduardoponz@eprosima.com> * Refs #13384: Apply suggestions Signed-off-by: Eduardo Ponz <eduardoponz@eprosima.com> * Refs #13384: Bump version Signed-off-by: Eduardo Ponz <eduardoponz@eprosima.com> Co-authored-by: Eduardo Ponz <eduardoponz@eprosima.com>
1 parent 38139da commit 34ab08a

43 files changed

Lines changed: 18945 additions & 134 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

fastdds_python/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ if(POLICY CMP0086)
2424
cmake_policy(SET CMP0086 NEW)
2525
endif()
2626

27-
project(fastdds_python VERSION 0.2.0)
27+
project(fastdds_python VERSION 1.0.0)
2828

2929
###############################################################################
3030
# Dependencies

fastdds_python/src/swig/CMakeLists.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,10 @@ SWIG_ADD_LIBRARY(${PROJECT_NAME}
4545
SOURCES ${${PROJECT_NAME}_FILES}
4646
)
4747

48+
if(UNIX AND CMAKE_SIZEOF_VOID_P EQUAL 8)
49+
set_property(TARGET ${PROJECT_NAME} PROPERTY SWIG_COMPILE_DEFINITIONS SWIGWORDSIZE64)
50+
endif()
51+
4852
SWIG_LINK_LIBRARIES(${PROJECT_NAME}
4953
Python3::Module
5054
fastrtps

fastdds_python/src/swig/fastdds.i

Lines changed: 28 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -56,15 +56,27 @@
5656
%include "std_vector.i"
5757
%include "typemaps.i"
5858

59+
%{
60+
#include "fastrtps/config.h"
61+
62+
bool has_statistics()
63+
{
64+
#ifdef FASTDDS_STATISTICS
65+
return true;
66+
#else
67+
return false;
68+
#endif
69+
}
70+
71+
%}
72+
73+
bool has_statistics();
74+
5975
// Some operators are ignored, as there is no such thing in Python.
6076
// Trying to export them issues a warning
6177
%ignore *::operator=;
6278
%ignore *::operator++;
6379
%ignore *::operator!;
64-
%ignore *::operator==;
65-
%ignore *::operator!=;
66-
%ignore *::operator<<;
67-
%ignore *::operator>>;
6880

6981
// This ensures that the returned string references can be used with the string API
7082
// Otherwise, they will be wrapped objects without API
@@ -83,6 +95,9 @@
8395
#define FASTDDS_DEPRECATED_UNTIL(major, entity_name, msg)
8496
#define FASTDDS_TODO_BEFORE(major, minor, msg)
8597

98+
// Defined template for std::vector<std::string>
99+
%template(StringVector) std::vector<std::string>;
100+
86101
// Predeclaration of namespaces and/or classes not exported to the target language,
87102
// but that are part of the Fast DDS public API
88103
// SWIG will make an empty wrapper around these, but still needs to know they exists
@@ -116,6 +131,7 @@ namespace builtin {
116131
%include "fastdds/rtps/common/GuidPrefix_t.i"
117132
%include "fastdds/rtps/common/Guid.i"
118133
%include "fastdds/rtps/common/PortParameters.i"
134+
%include "fastdds/rtps/common/InstanceHandle.i"
119135
%include "fastrtps/types/TypesBase.i"
120136
%include "fastdds/rtps/resources/ResourceManagement.i"
121137
%include "fastrtps/utils/collections/ResourceLimitedContainerConfig.i"
@@ -128,6 +144,9 @@ namespace builtin {
128144
%include "fastdds/rtps/attributes/ServerAttributes.i"
129145
%include "fastdds/rtps/attributes/ReaderAttributes.i"
130146
%include "fastdds/rtps/attributes/WriterAttributes.i"
147+
%include "fastdds/rtps/common/SequenceNumber.i"
148+
%include "fastdds/rtps/common/SampleIdentity.i"
149+
%include "fastdds/rtps/common/WriteParams.i"
131150

132151
/*
133152
%include "fastdds/rtps/common/SerializedPayload.i"
@@ -141,10 +160,7 @@ namespace builtin {
141160
%include "fastdds/rtps/common/MatchingInfo.i"
142161
%include "fastdds/rtps/common/ChangeKind_t.i"
143162
%include "fastdds/rtps/common/LocatorsIterator.i"
144-
%include "fastdds/rtps/common/SampleIdentity.i"
145-
%include "fastdds/rtps/common/SequenceNumber.i"
146163
%include "fastdds/rtps/common/RemoteLocators.i"
147-
%include "fastdds/rtps/common/WriteParams.i"
148164
149165
%include "fastrtps/rtps/common/LocatorListComparisons.i"
150166
%include "fastrtps/rtps/common/PortParameters.i"
@@ -407,18 +423,20 @@ namespace builtin {
407423
%include "fastrtps/Domain.i"
408424
*/
409425

410-
%include "fastdds/dds/core/status/StatusMask.i"
411426
%include "fastdds/dds/common/InstanceHandle.i"
427+
%include "fastdds/dds/core/status/StatusMask.i"
412428
%include "fastdds/dds/core/policy/ParameterTypes.i"
413429
%include "fastdds/dds/core/policy/QosPolicies.i"
414430
%include "fastdds/dds/topic/IContentFilter.i"
415431
%include "fastdds/dds/topic/TopicDataType.i"
416432
%include "fastdds/dds/topic/IContentFilterFactory.i"
417433
%include "fastdds/dds/topic/TypeSupport.i"
434+
%include "fastdds/dds/builtin/topic/BuiltinTopicKey.i"
435+
%include "fastdds/dds/builtin/topic/ParticipantBuiltinTopicData.i"
436+
%include "fastdds/dds/builtin/topic/SubscriptionBuiltinTopicData.i"
437+
%include "fastdds/dds/builtin/topic/PublicationBuiltinTopicData.i"
418438
%include "fastdds/dds/core/condition/Condition.i"
419-
%include "fastdds/dds/core/condition/StatusCondition.i"
420439
%include "fastdds/dds/core/Entity.i"
421-
%include "fastdds/dds/core/condition/GuardCondition.i"
422440
%include "fastdds/dds/core/condition/WaitSet.i"
423441
%include "fastdds/dds/core/LoanableTypedCollection.i"
424442
%include "fastdds/dds/core/StackAllocatedSequence.i"

fastdds_python/src/swig/fastdds/dds/common/InstanceHandle.i

Lines changed: 2 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -13,64 +13,8 @@
1313
// limitations under the License.
1414

1515
%{
16-
#include "fastdds/rtps/common/InstanceHandle.h"
17-
18-
// Define a hash method in global scope for GuidPrefix_t types
19-
// This is necessary if we want other classes to hash an internal GuidPrefix_t
20-
long hash(const eprosima::fastrtps::rtps::InstanceHandle_t& handle)
21-
{
22-
long ret = 0;
23-
for (unsigned int i = 0; i < 16; ++i)
24-
{
25-
ret = (ret * 31) ^ handle.value[i];
26-
}
27-
return ret;
28-
}
29-
16+
#include "fastdds/dds/common/InstanceHandle.hpp"
3017
%}
3118

32-
// SWIG does not support type conversion operators correctly unless converted to a normal method
33-
%rename(get_guid) eprosima::fastrtps::rtps::InstanceHandle_t::operator const GUID_t&;
34-
35-
%ignore eprosima::fastrtps::rtps::InstanceHandleValue_t::operator [] const;
36-
%rename(read_pointer_cast) eprosima::fastrtps::rtps::InstanceHandleValue_t::operator const octet* () const;
37-
%rename(write_pointer_cast) eprosima::fastrtps::rtps::InstanceHandleValue_t::operator octet* ();
38-
39-
%include "fastdds/rtps/common/InstanceHandle.h"
40-
41-
namespace eprosima {
42-
namespace fastdds {
43-
namespace dds {
44-
45-
using InstanceHandle_t = eprosima::fastrtps::rtps::InstanceHandle_t;
46-
47-
} // namespace dds
48-
} // namespace fastdds
49-
} // namespace eprosima
50-
51-
// Declare the comparison operators as internal to the class
52-
%extend eprosima::fastrtps::rtps::InstanceHandle_t {
53-
54-
bool operator==(const eprosima::fastrtps::rtps::InstanceHandle_t& other) const
55-
{
56-
return *$self == other;
57-
}
58-
59-
bool operator!=(const eprosima::fastrtps::rtps::InstanceHandle_t& other) const
60-
{
61-
return *$self != other;
62-
}
63-
64-
std::string __str__() const
65-
{
66-
std::ostringstream out;
67-
out << *$self;
68-
return out.str();
69-
}
7019

71-
// Define the hash method using the global one
72-
long __hash__() const
73-
{
74-
return hash(*$self);
75-
}
76-
}
20+
%include "fastdds/dds/common/InstanceHandle.hpp"

fastdds_python/src/swig/fastdds/dds/core/condition/Condition.i

Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,108 @@
1414

1515
%{
1616
#include "fastdds/dds/core/condition/Condition.hpp"
17+
#include "fastdds/dds/core/condition/StatusCondition.hpp"
18+
#include "fastdds/dds/core/condition/GuardCondition.hpp"
1719
%}
1820

21+
%exception eprosima::fastdds::dds::Condition::to_status_condition()
22+
{
23+
try
24+
{
25+
$action
26+
}
27+
catch(std::bad_cast ex)
28+
{
29+
SWIG_exception(SWIG_TypeError, "Bad cast of Condition");
30+
}
31+
}
32+
33+
%exception eprosima::fastdds::dds::Condition::to_guard_condition()
34+
{
35+
try
36+
{
37+
$action
38+
}
39+
catch(std::bad_cast ex)
40+
{
41+
SWIG_exception(SWIG_TypeError, "Bad cast of Condition");
42+
}
43+
}
44+
45+
%extend eprosima::fastdds::dds::Condition
46+
{
47+
std::string __str__()
48+
{
49+
if (nullptr != dynamic_cast<eprosima::fastdds::dds::StatusCondition*>(self))
50+
{
51+
return "StatusCondition";
52+
}
53+
else if (nullptr != dynamic_cast<eprosima::fastdds::dds::GuardCondition*>(self))
54+
{
55+
return "GuardCondition";
56+
}
57+
58+
return "None";
59+
}
60+
61+
eprosima::fastdds::dds::StatusCondition* to_status_condition()
62+
{
63+
eprosima::fastdds::dds::StatusCondition* status_cond =
64+
dynamic_cast<eprosima::fastdds::dds::StatusCondition*>(self);
65+
66+
if (nullptr == status_cond)
67+
{
68+
throw std::bad_cast();
69+
}
70+
71+
return status_cond;
72+
}
73+
74+
eprosima::fastdds::dds::GuardCondition* to_guard_condition()
75+
{
76+
eprosima::fastdds::dds::GuardCondition* guard_cond =
77+
dynamic_cast<eprosima::fastdds::dds::GuardCondition*>(self);
78+
79+
if (nullptr == guard_cond)
80+
{
81+
throw std::bad_cast();
82+
}
83+
84+
return guard_cond;
85+
}
86+
}
87+
88+
%extend eprosima::fastdds::dds::StatusCondition
89+
{
90+
std::string __str__()
91+
{
92+
return "StatusCondition";
93+
}
94+
95+
bool __eq__(
96+
const eprosima::fastdds::dds::StatusCondition* s1)
97+
{
98+
return s1 == self;
99+
}
100+
}
101+
102+
%extend eprosima::fastdds::dds::GuardCondition
103+
{
104+
std::string __str__()
105+
{
106+
return "GuardCondition";
107+
}
108+
109+
bool __eq__(
110+
const eprosima::fastdds::dds::GuardCondition* s1)
111+
{
112+
return s1 == self;
113+
}
114+
}
115+
116+
// Template for ConditionSeq
117+
%template(ConditionSeq) std::vector<eprosima::fastdds::dds::Condition*>;
118+
19119
%include "fastdds/dds/core/condition/Condition.hpp"
120+
%include "fastdds/dds/core/condition/StatusCondition.hpp"
121+
%include "fastdds/dds/core/condition/GuardCondition.hpp"

fastdds_python/src/swig/fastdds/dds/core/condition/StatusCondition.i

Lines changed: 0 additions & 19 deletions
This file was deleted.

fastdds_python/src/swig/fastdds/dds/core/policy/QosPolicies.i

Lines changed: 46 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ public:
9090
catch (OctetResourceLimitedVectorStopIterator)
9191
{
9292
PyErr_SetString(PyExc_StopIteration, "End of iterator");
93-
return NULL;
93+
return nullptr;
9494
}
9595
}
9696

@@ -108,15 +108,53 @@ public:
108108
}
109109
}
110110

111-
%extend eprosima::fastrtps::ResourceLimitedVector<eprosima::fastrtps::rtps::octet> {
111+
%exception eprosima::fastrtps::ResourceLimitedVector<eprosima::fastrtps::rtps::octet>::__getitem__
112+
{
113+
try
114+
{
115+
$action
116+
}
117+
catch(std::out_of_range)
118+
{
119+
SWIG_exception(SWIG_IndexError, "Index out of bounds");
120+
}
121+
}
122+
123+
%extend eprosima::fastrtps::ResourceLimitedVector<eprosima::fastrtps::rtps::octet>
124+
{
112125
OctetResourceLimitedVectorIterator __iter__()
113126
{
114127
// return a constructed Iterator object
115128
return OctetResourceLimitedVectorIterator($self->begin(), $self->end());
116129
}
130+
131+
size_t __len__() const
132+
{
133+
return self->size();
134+
}
135+
136+
eprosima::fastrtps::rtps::octet __getitem__(int i)
137+
{
138+
if (self->size() <= i)
139+
{
140+
throw std::out_of_range("Index out of bounds");
141+
}
142+
return (*self)[i];
143+
}
144+
}
145+
146+
%exception eprosima::fastdds::dds::PartitionQosPolicy::__getitem__
147+
{
148+
try
149+
{
150+
$action
151+
}
152+
catch(std::out_of_range)
153+
{
154+
SWIG_exception(SWIG_IndexError, "Index out of bounds");
155+
}
117156
}
118157

119-
// TODO (richiware) missing exceptions
120158
%extend eprosima::fastdds::dds::PartitionQosPolicy
121159
{
122160
size_t __len__() const
@@ -126,6 +164,11 @@ public:
126164

127165
std::string __getitem__(int i)
128166
{
167+
if (self->size() <= i)
168+
{
169+
throw std::out_of_range("Index out of bounds");
170+
}
171+
129172
auto it = self->begin();
130173
for (int count = 0; count < i; ++count)
131174
{

0 commit comments

Comments
 (0)