Coverage Report

Created: 2025-06-13 06:46

/src/Fast-DDS/include/fastdds/rtps/attributes/RTPSParticipantAttributes.hpp
Line
Count
Source (jump to first uncovered line)
1
// Copyright 2016 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 RTPSParticipantAttributes.hpp
17
 */
18
19
#ifndef FASTDDS_RTPS_ATTRIBUTES__RTPSPARTICIPANTATTRIBUTES_HPP
20
#define FASTDDS_RTPS_ATTRIBUTES__RTPSPARTICIPANTATTRIBUTES_HPP
21
22
#include <memory>
23
#include <sstream>
24
25
#include <fastcdr/cdr/fixed_size_string.hpp>
26
27
#include <fastdds/rtps/attributes/BuiltinTransports.hpp>
28
#include <fastdds/rtps/attributes/ExternalLocators.hpp>
29
#include <fastdds/rtps/attributes/PropertyPolicy.hpp>
30
#include <fastdds/rtps/attributes/ResourceManagement.hpp>
31
#include <fastdds/rtps/attributes/RTPSParticipantAllocationAttributes.hpp>
32
#include <fastdds/rtps/attributes/ThreadSettings.hpp>
33
#include <fastdds/rtps/common/Locator.hpp>
34
#include <fastdds/rtps/common/PortParameters.hpp>
35
#include <fastdds/rtps/common/Time_t.hpp>
36
#include <fastdds/rtps/common/Types.hpp>
37
#include <fastdds/rtps/flowcontrol/FlowControllerDescriptor.hpp>
38
#include <fastdds/rtps/transport/network/NetmaskFilterKind.hpp>
39
#include <fastdds/rtps/transport/TransportInterface.hpp>
40
#include <fastdds/fastdds_dll.hpp>
41
42
namespace eprosima {
43
namespace fastdds {
44
namespace rtps {
45
46
/**
47
 * Struct to define participant types to set participant type parameter property
48
 */
49
struct ParticipantType
50
{
51
    static constexpr const char* SIMPLE = "SIMPLE";
52
    static constexpr const char* SERVER = "SERVER";
53
    static constexpr const char* CLIENT = "CLIENT";
54
    static constexpr const char* SUPER_CLIENT = "SUPER_CLIENT";
55
    static constexpr const char* BACKUP = "BACKUP";
56
    static constexpr const char* NONE = "NONE";
57
    static constexpr const char* EXTERNAL = "EXTERNAL";
58
    static constexpr const char* UNKNOWN = "UNKNOWN";
59
};
60
61
}  // namespace rtps
62
}  // namespace fastdds
63
64
namespace fastdds {
65
namespace rtps {
66
67
//! PDP subclass choice
68
enum class DiscoveryProtocol
69
{
70
    NONE,
71
    /*!<
72
        NO discovery whatsoever would be used.
73
        Publisher and Subscriber defined with the same topic name would NOT be linked.
74
        All matching must be done manually through the addReaderLocator, addReaderProxy, addWriterProxy methods.
75
     */
76
    SIMPLE,
77
    /*!<
78
        Discovery works according to 'The Real-time Publish-Subscribe Protocol(RTPS) DDS
79
        Interoperability Wire Protocol Specification'
80
     */
81
    EXTERNAL,
82
    /*!<
83
        A user defined PDP subclass object must be provided in the attributes that deals with the discovery.
84
        Framework is not responsible of this object lifetime.
85
     */
86
    CLIENT, /*!< The participant will behave as a client concerning discovery operation.
87
                 Server locators should be specified as attributes. */
88
    SERVER, /*!< The participant will behave as a server concerning discovery operation.
89
                 Discovery operation is volatile (discovery handshake must take place if shutdown). */
90
    BACKUP,  /*!< The participant will behave as a server concerning discovery operation.
91
                 Discovery operation persist on a file (discovery handshake wouldn't repeat if shutdown). */
92
    SUPER_CLIENT  /*!< The participant will behave as a client concerning all internal behaviour.
93
                     Remote servers will treat it as a server and will share every discovery information. */
94
95
};
96
97
inline std::ostream& operator <<(
98
        std::ostream& output,
99
        const DiscoveryProtocol& discovery_protocol)
100
0
{
101
0
    switch (discovery_protocol)
102
0
    {
103
0
        case DiscoveryProtocol::NONE:
104
0
            output << fastdds::rtps::ParticipantType::NONE;
105
0
            break;
106
0
        case DiscoveryProtocol::SIMPLE:
107
0
            output << fastdds::rtps::ParticipantType::SIMPLE;
108
0
            break;
109
0
        case DiscoveryProtocol::EXTERNAL:
110
0
            output << fastdds::rtps::ParticipantType::EXTERNAL;
111
0
            break;
112
0
        case DiscoveryProtocol::CLIENT:
113
0
            output << fastdds::rtps::ParticipantType::CLIENT;
114
0
            break;
115
0
        case DiscoveryProtocol::SUPER_CLIENT:
116
0
            output << fastdds::rtps::ParticipantType::SUPER_CLIENT;
117
0
            break;
118
0
        case DiscoveryProtocol::SERVER:
119
0
            output << fastdds::rtps::ParticipantType::SERVER;
120
0
            break;
121
0
        case DiscoveryProtocol::BACKUP:
122
0
            output << fastdds::rtps::ParticipantType::BACKUP;
123
0
            break;
124
0
        default:
125
0
            output << fastdds::rtps::ParticipantType::UNKNOWN;
126
0
    }
127
0
    return output;
128
0
}
129
130
/**
131
 * Returns the guidPrefix associated to the given server id
132
 * @param [in] id of the default server whose guidPrefix we want to retrieve
133
 * @param [out] guid reference to the guidPrefix to modify
134
 * @return true if the server guid can be delivered
135
 */
136
FASTDDS_EXPORTED_API bool get_server_client_default_guidPrefix(
137
        int id,
138
        fastdds::rtps::GuidPrefix_t& guid);
139
140
// Port used if the ros environment variable doesn't specify one
141
constexpr uint16_t DEFAULT_ROS2_SERVER_PORT = 11811;
142
// Port used by default for tcp transport
143
constexpr uint16_t DEFAULT_TCP_SERVER_PORT = 42100;
144
145
//! Filtering flags when discovering participants
146
FASTDDS_TODO_BEFORE(4, 0, "Change it to uint8_t (implies also changing [de]serializations)");
147
enum ParticipantFilteringFlags : uint32_t
148
{
149
    NO_FILTER = 0,
150
    FILTER_DIFFERENT_HOST = 0x1,
151
    FILTER_DIFFERENT_PROCESS = 0x2,
152
    FILTER_SAME_PROCESS = 0x4
153
};
154
155
#define BUILTIN_DATA_MAX_SIZE 512
156
157
//! PDP factory for EXTERNAL type
158
class PDP;
159
class BuiltinProtocols;
160
161
typedef struct PDPFactory
162
{
163
    // Pointer to the PDP creator
164
    PDP* (*CreatePDPInstance)(BuiltinProtocols*);
165
    // Pointer to the PDP destructor
166
    void (* ReleasePDPInstance)(
167
            PDP*);
168
169
    bool operator ==(
170
            const struct PDPFactory& e) const
171
0
    {
172
0
        return (CreatePDPInstance == e.CreatePDPInstance)
173
0
               && (ReleasePDPInstance == e.ReleasePDPInstance);
174
0
    }
175
176
} PDPFactory;
177
178
/**
179
 * Class SimpleEDPAttributes, to define the attributes of the Simple Endpoint Discovery Protocol.
180
 * @ingroup RTPS_ATTRIBUTES_MODULE
181
 */
182
class SimpleEDPAttributes
183
{
184
public:
185
186
    //!Default value true.
187
    bool use_PublicationWriterANDSubscriptionReader;
188
189
    //!Default value true.
190
    bool use_PublicationReaderANDSubscriptionWriter;
191
192
#if HAVE_SECURITY
193
    bool enable_builtin_secure_publications_writer_and_subscriptions_reader;
194
195
    bool enable_builtin_secure_subscriptions_writer_and_publications_reader;
196
#endif // if HAVE_SECURITY
197
198
    SimpleEDPAttributes()
199
105k
        : use_PublicationWriterANDSubscriptionReader(true)
200
105k
        , use_PublicationReaderANDSubscriptionWriter(true)
201
#if HAVE_SECURITY
202
        , enable_builtin_secure_publications_writer_and_subscriptions_reader(true)
203
        , enable_builtin_secure_subscriptions_writer_and_publications_reader(true)
204
#endif // if HAVE_SECURITY
205
105k
    {
206
105k
    }
207
208
    bool operator ==(
209
            const SimpleEDPAttributes& b) const
210
0
    {
211
0
        return (this->use_PublicationWriterANDSubscriptionReader == b.use_PublicationWriterANDSubscriptionReader) &&
212
#if HAVE_SECURITY
213
               (this->enable_builtin_secure_publications_writer_and_subscriptions_reader ==
214
               b.enable_builtin_secure_publications_writer_and_subscriptions_reader) &&
215
               (this->enable_builtin_secure_subscriptions_writer_and_publications_reader ==
216
               b.enable_builtin_secure_subscriptions_writer_and_publications_reader) &&
217
#endif // if HAVE_SECURITY
218
0
               (this->use_PublicationReaderANDSubscriptionWriter == b.use_PublicationReaderANDSubscriptionWriter);
219
0
    }
220
221
};
222
223
/**
224
 * Struct InitialAnnouncementConfig defines the behavior of the RTPSParticipant initial announcements.
225
 * @ingroup RTPS_ATTRIBUTES_MODULE
226
 */
227
struct InitialAnnouncementConfig
228
{
229
    /// Number of initial announcements with specific period (default 5)
230
    uint32_t count = 5u;
231
232
    /// Specific period for initial announcements (default 100ms)
233
    dds::Duration_t period = { 0, 100000000u };
234
235
    bool operator ==(
236
            const InitialAnnouncementConfig& b) const
237
0
    {
238
0
        return (count == b.count) && (period == b.period);
239
0
    }
240
241
};
242
243
/**
244
 * Class DiscoverySettings, to define the attributes of the several discovery protocols available
245
 * @ingroup RTPS_ATTRIBUTES_MODULE
246
 */
247
248
class DiscoverySettings
249
{
250
public:
251
252
    //! Chosen discovery protocol
253
    DiscoveryProtocol discoveryProtocol = DiscoveryProtocol::SIMPLE;
254
255
    /**
256
     * If set to true, SimpleEDP would be used.
257
     */
258
    bool use_SIMPLE_EndpointDiscoveryProtocol = true;
259
260
    /**
261
     * If set to true, StaticEDP based on an XML file would be implemented.
262
     * The XML filename must be provided.
263
     */
264
    bool use_STATIC_EndpointDiscoveryProtocol = false;
265
266
    /**
267
     * Lease Duration of the RTPSParticipant,
268
     * indicating how much time remote RTPSParticipants should consider this RTPSParticipant alive.
269
     */
270
    dds::Duration_t leaseDuration = { 20, 0 };
271
272
    /**
273
     * The period for the RTPSParticipant to send its Discovery Message to all other discovered RTPSParticipants
274
     * as well as to all Multicast ports.
275
     */
276
    dds::Duration_t leaseDuration_announcementperiod = { 3, 0 };
277
278
    //!Initial announcements configuration
279
    InitialAnnouncementConfig initial_announcements;
280
281
    //!Attributes of the SimpleEDP protocol
282
    SimpleEDPAttributes m_simpleEDP;
283
284
    //! function that returns a PDP object (only if EXTERNAL selected)
285
    PDPFactory m_PDPfactory{};
286
    /**
287
     * The period for the RTPSParticipant to:
288
     *  send its Discovery Message to its servers
289
     *  check for EDP endpoints matching
290
     */
291
    dds::Duration_t discoveryServer_client_syncperiod = { 0, 450 * 1000000}; // 450 milliseconds
292
293
    //! Discovery Server initial connections, needed if `discoveryProtocol` = CLIENT | SUPER_CLIENT | SERVER | BACKUP
294
    eprosima::fastdds::rtps::LocatorList m_DiscoveryServers;
295
296
    //! Filtering participants out depending on location
297
    ParticipantFilteringFlags ignoreParticipantFlags = ParticipantFilteringFlags::NO_FILTER;
298
299
105k
    DiscoverySettings() = default;
300
301
    bool operator ==(
302
            const DiscoverySettings& b) const
303
0
    {
304
0
        return (this->discoveryProtocol == b.discoveryProtocol) &&
305
0
               (this->use_SIMPLE_EndpointDiscoveryProtocol == b.use_SIMPLE_EndpointDiscoveryProtocol) &&
306
0
               (this->use_STATIC_EndpointDiscoveryProtocol == b.use_STATIC_EndpointDiscoveryProtocol) &&
307
0
               (this->discoveryServer_client_syncperiod == b.discoveryServer_client_syncperiod) &&
308
0
               (this->m_PDPfactory == b.m_PDPfactory) &&
309
0
               (this->leaseDuration == b.leaseDuration) &&
310
0
               (this->leaseDuration_announcementperiod == b.leaseDuration_announcementperiod) &&
311
0
               (this->initial_announcements == b.initial_announcements) &&
312
0
               (this->m_simpleEDP == b.m_simpleEDP) &&
313
0
               (this->static_edp_xml_config_ == b.static_edp_xml_config_) &&
314
0
               (this->m_DiscoveryServers == b.m_DiscoveryServers) &&
315
0
               (this->ignoreParticipantFlags == b.ignoreParticipantFlags);
316
0
    }
317
318
    /**
319
     * Set the static endpoint XML configuration.
320
     * @param str URI specifying the static endpoint XML configuration.
321
     * The string could contain a filename (file://) or the XML content directly (data://).
322
     */
323
    void static_edp_xml_config(
324
            const char* str)
325
0
    {
326
0
        static_edp_xml_config_ = str;
327
0
    }
328
329
    /**
330
     * Get the static endpoint XML configuration.
331
     * @return URI specifying the static endpoint XML configuration.
332
     * The string could contain a filename (file://) or the XML content directly (data://).
333
     */
334
    const char* static_edp_xml_config() const
335
0
    {
336
0
        return static_edp_xml_config_.c_str();
337
0
    }
338
339
private:
340
341
    //! URI specifying the static EDP XML configuration, only necessary if use_STATIC_EndpointDiscoveryProtocol=true
342
    //! This string could contain a filename or the XML content directly.
343
    std::string static_edp_xml_config_ = "";
344
};
345
346
/**
347
 * Class BuiltinAttributes, to define the behavior of the RTPSParticipant builtin protocols.
348
 * @ingroup RTPS_ATTRIBUTES_MODULE
349
 */
350
class BuiltinAttributes
351
{
352
public:
353
354
    //! Discovery protocol related attributes
355
    DiscoverySettings discovery_config;
356
357
    //! Indicates to use the WriterLiveliness protocol.
358
    bool use_WriterLivelinessProtocol = true;
359
360
    //! Network Configuration
361
    NetworkConfigSet_t network_configuration = 0;
362
363
    //! Metatraffic Unicast Locator List
364
    LocatorList_t metatrafficUnicastLocatorList;
365
366
    //! Metatraffic Multicast Locator List.
367
    LocatorList_t metatrafficMulticastLocatorList;
368
369
    //! The collection of external locators to use for communication on metatraffic topics.
370
    fastdds::rtps::ExternalLocators metatraffic_external_unicast_locators;
371
372
    //! Initial peers.
373
    LocatorList_t initialPeersList;
374
375
    //! Memory policy for builtin readers
376
    MemoryManagementPolicy_t readerHistoryMemoryPolicy =
377
            MemoryManagementPolicy_t::PREALLOCATED_WITH_REALLOC_MEMORY_MODE;
378
379
    //! Maximum payload size for builtin readers
380
    uint32_t readerPayloadSize = BUILTIN_DATA_MAX_SIZE;
381
382
    //! Memory policy for builtin writers
383
    MemoryManagementPolicy_t writerHistoryMemoryPolicy =
384
            MemoryManagementPolicy_t::PREALLOCATED_WITH_REALLOC_MEMORY_MODE;
385
386
    //! Maximum payload size for builtin writers
387
    uint32_t writerPayloadSize = BUILTIN_DATA_MAX_SIZE;
388
389
    //! Mutation tries if the port is being used.
390
    uint32_t mutation_tries = 100u;
391
392
    //! Set to true to avoid multicast traffic on builtin endpoints
393
    bool avoid_builtin_multicast = true;
394
395
    //! Flow controller name to use for the builtin writers
396
    std::string flow_controller_name = "";
397
398
105k
    BuiltinAttributes() = default;
399
400
104k
    virtual ~BuiltinAttributes() = default;
401
402
    bool operator ==(
403
            const BuiltinAttributes& b) const
404
0
    {
405
0
        return (this->discovery_config == b.discovery_config) &&
406
0
               (this->use_WriterLivelinessProtocol == b.use_WriterLivelinessProtocol) &&
407
0
               (this->network_configuration == b.network_configuration) &&
408
0
               (this->metatrafficUnicastLocatorList == b.metatrafficUnicastLocatorList) &&
409
0
               (this->metatrafficMulticastLocatorList == b.metatrafficMulticastLocatorList) &&
410
0
               (this->metatraffic_external_unicast_locators == b.metatraffic_external_unicast_locators) &&
411
0
               (this->initialPeersList == b.initialPeersList) &&
412
0
               (this->readerHistoryMemoryPolicy == b.readerHistoryMemoryPolicy) &&
413
0
               (this->readerPayloadSize == b.readerPayloadSize) &&
414
0
               (this->writerHistoryMemoryPolicy == b.writerHistoryMemoryPolicy) &&
415
0
               (this->writerPayloadSize == b.writerPayloadSize) &&
416
0
               (this->mutation_tries == b.mutation_tries) &&
417
0
               (this->flow_controller_name == b.flow_controller_name) &&
418
0
               (this->avoid_builtin_multicast == b.avoid_builtin_multicast);
419
0
    }
420
421
};
422
423
/**
424
 * Class RTPSParticipantAttributes used to define different aspects of a RTPSParticipant.
425
 * @ingroup RTPS_ATTRIBUTES_MODULE
426
 */
427
class RTPSParticipantAttributes
428
{
429
    using FlowControllerDescriptorList = std::vector<std::shared_ptr<fastdds::rtps::FlowControllerDescriptor>>;
430
431
public:
432
433
105k
    RTPSParticipantAttributes() = default;
434
435
104k
    virtual ~RTPSParticipantAttributes() = default;
436
437
    bool operator ==(
438
            const RTPSParticipantAttributes& b) const
439
0
    {
440
0
        return (this->name == b.name) &&
441
0
               (this->defaultUnicastLocatorList == b.defaultUnicastLocatorList) &&
442
0
               (this->defaultMulticastLocatorList == b.defaultMulticastLocatorList) &&
443
0
               (this->default_external_unicast_locators == b.default_external_unicast_locators) &&
444
0
               (this->ignore_non_matching_locators == b.ignore_non_matching_locators) &&
445
0
               (this->sendSocketBufferSize == b.sendSocketBufferSize) &&
446
0
               (this->listenSocketBufferSize == b.listenSocketBufferSize) &&
447
0
               (this->netmaskFilter == b.netmaskFilter) &&
448
0
               (this->builtin == b.builtin) &&
449
0
               (this->port == b.port) &&
450
0
               (this->userData == b.userData) &&
451
0
               (this->participantID == b.participantID) &&
452
0
               (this->easy_mode_ip == b.easy_mode_ip) &&
453
0
               (this->useBuiltinTransports == b.useBuiltinTransports) &&
454
0
               (this->properties == b.properties) &&
455
0
               (this->prefix == b.prefix) &&
456
0
               (this->flow_controllers == b.flow_controllers) &&
457
0
               (this->builtin_controllers_sender_thread == b.builtin_controllers_sender_thread) &&
458
0
               (this->timed_events_thread == b.timed_events_thread) &&
459
0
#if HAVE_SECURITY
460
0
               (this->security_log_thread == b.security_log_thread) &&
461
0
#endif // if HAVE_SECURITY
462
0
               (this->discovery_server_thread == b.discovery_server_thread) &&
463
0
               (this->typelookup_service_thread == b.typelookup_service_thread) &&
464
0
               (this->builtin_transports_reception_threads == b.builtin_transports_reception_threads);
465
0
466
0
    }
467
468
    /**
469
     * Provides a way of easily configuring transport related configuration on certain pre-defined scenarios with
470
     * certain options.
471
     *
472
     * @param transports Defines the transport configuration scenario to setup.
473
     * @param options Defines the options to be used in the transport configuration.
474
     */
475
    FASTDDS_EXPORTED_API void setup_transports(
476
            fastdds::rtps::BuiltinTransports transports,
477
            const fastdds::rtps::BuiltinTransportsOptions& options = fastdds::rtps::BuiltinTransportsOptions());
478
479
    /**
480
     * Default list of Unicast Locators to be used for any Endpoint defined inside this RTPSParticipant in the case
481
     * that it was defined with NO UnicastLocators. At least ONE locator should be included in this list.
482
     */
483
    LocatorList_t defaultUnicastLocatorList;
484
485
    /**
486
     * Default list of Multicast Locators to be used for any Endpoint defined inside this RTPSParticipant in the
487
     * case that it was defined with NO MulticastLocators. This is usually left empty.
488
     */
489
    LocatorList_t defaultMulticastLocatorList;
490
491
    /**
492
     * The collection of external locators to use for communication on user created topics.
493
     */
494
    fastdds::rtps::ExternalLocators default_external_unicast_locators;
495
496
    /**
497
     * Whether locators that don't match with the announced locators should be kept.
498
     */
499
    bool ignore_non_matching_locators = false;
500
501
    /*!
502
     * @brief Send socket buffer size for the send resource. Zero value indicates to use default system buffer size.
503
     * Default value: 0.
504
     */
505
    uint32_t sendSocketBufferSize = 0;
506
507
    /*! Listen socket buffer for all listen resources. Zero value indicates to use default system buffer size.
508
     * Default value: 0.
509
     */
510
    uint32_t listenSocketBufferSize = 0;
511
512
    //! Netmask filter configuration
513
    fastdds::rtps::NetmaskFilterKind netmaskFilter = fastdds::rtps::NetmaskFilterKind::AUTO;
514
515
    //! Optionally allows user to define the GuidPrefix_t
516
    GuidPrefix_t prefix;
517
518
    FASTDDS_EXPORTED_API inline bool ReadguidPrefix(
519
            const char* pfx)
520
0
    {
521
0
        return bool(std::istringstream(pfx) >> prefix);
522
0
    }
523
524
    //! Builtin parameters.
525
    BuiltinAttributes builtin;
526
527
    //! Port Parameters
528
    PortParameters port;
529
530
    //! User Data of the participant
531
    std::vector<octet> userData;
532
533
    //! Participant ID
534
    int32_t participantID = -1;
535
536
    //! IP of the Host where master Server is located (EASY_MODE context)
537
    std::string easy_mode_ip = "";
538
539
    //! User defined transports to use alongside or in place of builtins.
540
    std::vector<std::shared_ptr<fastdds::rtps::TransportDescriptorInterface>> userTransports;
541
542
    //! Set as false to disable the creation of the default transports.
543
    bool useBuiltinTransports = true;
544
545
    //! Holds allocation limits affecting collections managed by a participant.
546
    RTPSParticipantAllocationAttributes allocation;
547
548
    //! Property policies
549
    PropertyPolicy properties;
550
551
    //! Set the name of the participant.
552
    inline void setName(
553
            const char* nam)
554
1.90k
    {
555
1.90k
        name = nam;
556
1.90k
    }
557
558
    //! Get the name of the participant.
559
    inline const char* getName() const
560
0
    {
561
0
        return name.c_str();
562
0
    }
563
564
    //! Flow controllers.
565
    FlowControllerDescriptorList flow_controllers;
566
567
    //! Thread settings for the builtin flow controllers sender threads
568
    fastdds::rtps::ThreadSettings builtin_controllers_sender_thread;
569
570
    //! Thread settings for the timed events thread
571
    fastdds::rtps::ThreadSettings timed_events_thread;
572
573
    //! Thread settings for the discovery server thread
574
    fastdds::rtps::ThreadSettings discovery_server_thread;
575
576
    //! Thread settings for the builtin TypeLookup service requests and replies threads
577
    fastdds::rtps::ThreadSettings typelookup_service_thread;
578
579
    //! Thread settings for the builtin transports reception threads
580
    fastdds::rtps::ThreadSettings builtin_transports_reception_threads;
581
582
#if HAVE_SECURITY
583
    //! Thread settings for the security log thread
584
    fastdds::rtps::ThreadSettings security_log_thread;
585
#endif // if HAVE_SECURITY
586
587
    /*! Maximum message size used to avoid fragmentation, set ONLY in LARGE_DATA. If this value is
588
     * not zero, the network factory will allow the initialization of UDP transports with maxMessageSize
589
     * higher than 65500K.
590
     */
591
    uint32_t max_msg_size_no_frag = 0;
592
593
private:
594
595
    //! Name of the participant.
596
    fastcdr::string_255 name{"RTPSParticipant"};
597
};
598
599
}  // namespace rtps
600
}  // namespace fastdds
601
}  // namespace eprosima
602
603
#endif  // FASTDDS_RTPS_ATTRIBUTES__RTPSPARTICIPANTATTRIBUTES_HPP