Coverage Report

Created: 2026-04-01 06:58

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/Fast-DDS/include/fastdds/rtps/attributes/RTPSParticipantAttributes.hpp
Line
Count
Source
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
0
#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)(
165
            BuiltinProtocols*);
166
    // Pointer to the PDP destructor
167
    void (* ReleasePDPInstance)(
168
            PDP*);
169
170
    bool operator ==(
171
            const struct PDPFactory& e) const
172
0
    {
173
0
        return (CreatePDPInstance == e.CreatePDPInstance)
174
0
               && (ReleasePDPInstance == e.ReleasePDPInstance);
175
0
    }
176
177
} PDPFactory;
178
179
/**
180
 * Class SimpleEDPAttributes, to define the attributes of the Simple Endpoint Discovery Protocol.
181
 * @ingroup RTPS_ATTRIBUTES_MODULE
182
 */
183
class SimpleEDPAttributes
184
{
185
public:
186
187
    //!Default value true.
188
    bool use_PublicationWriterANDSubscriptionReader;
189
190
    //!Default value true.
191
    bool use_PublicationReaderANDSubscriptionWriter;
192
193
#if HAVE_SECURITY
194
    bool enable_builtin_secure_publications_writer_and_subscriptions_reader;
195
196
    bool enable_builtin_secure_subscriptions_writer_and_publications_reader;
197
#endif // if HAVE_SECURITY
198
199
    SimpleEDPAttributes()
200
83.2k
        : use_PublicationWriterANDSubscriptionReader(true)
201
83.2k
        , use_PublicationReaderANDSubscriptionWriter(true)
202
#if HAVE_SECURITY
203
        , enable_builtin_secure_publications_writer_and_subscriptions_reader(true)
204
        , enable_builtin_secure_subscriptions_writer_and_publications_reader(true)
205
#endif // if HAVE_SECURITY
206
83.2k
    {
207
83.2k
    }
208
209
    bool operator ==(
210
            const SimpleEDPAttributes& b) const
211
0
    {
212
0
        return (this->use_PublicationWriterANDSubscriptionReader == b.use_PublicationWriterANDSubscriptionReader) &&
213
#if HAVE_SECURITY
214
               (this->enable_builtin_secure_publications_writer_and_subscriptions_reader ==
215
               b.enable_builtin_secure_publications_writer_and_subscriptions_reader) &&
216
               (this->enable_builtin_secure_subscriptions_writer_and_publications_reader ==
217
               b.enable_builtin_secure_subscriptions_writer_and_publications_reader) &&
218
#endif // if HAVE_SECURITY
219
0
               (this->use_PublicationReaderANDSubscriptionWriter == b.use_PublicationReaderANDSubscriptionWriter);
220
0
    }
221
222
};
223
224
/**
225
 * Struct InitialAnnouncementConfig defines the behavior of the RTPSParticipant initial announcements.
226
 * @ingroup RTPS_ATTRIBUTES_MODULE
227
 */
228
struct InitialAnnouncementConfig
229
{
230
    /// Number of initial announcements with specific period (default 5)
231
    uint32_t count = 5u;
232
233
    /// Specific period for initial announcements (default 100ms)
234
    dds::Duration_t period = { 0, 100000000u };
235
236
    bool operator ==(
237
            const InitialAnnouncementConfig& b) const
238
0
    {
239
0
        return (count == b.count) && (period == b.period);
240
0
    }
241
242
};
243
244
/**
245
 * Class DiscoverySettings, to define the attributes of the several discovery protocols available
246
 * @ingroup RTPS_ATTRIBUTES_MODULE
247
 */
248
249
class DiscoverySettings
250
{
251
public:
252
253
    //! Chosen discovery protocol
254
    DiscoveryProtocol discoveryProtocol = DiscoveryProtocol::SIMPLE;
255
256
    /**
257
     * If set to true, SimpleEDP would be used.
258
     */
259
    bool use_SIMPLE_EndpointDiscoveryProtocol = true;
260
261
    /**
262
     * If set to true, StaticEDP based on an XML file would be implemented.
263
     * The XML filename must be provided.
264
     */
265
    bool use_STATIC_EndpointDiscoveryProtocol = false;
266
267
    /**
268
     * Lease Duration of the RTPSParticipant,
269
     * indicating how much time remote RTPSParticipants should consider this RTPSParticipant alive.
270
     */
271
    dds::Duration_t leaseDuration = { 20, 0 };
272
273
    /**
274
     * The period for the RTPSParticipant to send its Discovery Message to all other discovered RTPSParticipants
275
     * as well as to all Multicast ports.
276
     */
277
    dds::Duration_t leaseDuration_announcementperiod = { 3, 0 };
278
279
    //!Initial announcements configuration
280
    InitialAnnouncementConfig initial_announcements;
281
282
    //!Attributes of the SimpleEDP protocol
283
    SimpleEDPAttributes m_simpleEDP;
284
285
    //! function that returns a PDP object (only if EXTERNAL selected)
286
    PDPFactory m_PDPfactory{};
287
    /**
288
     * The period for the RTPSParticipant to:
289
     *  send its Discovery Message to its servers
290
     *  check for EDP endpoints matching
291
     */
292
    dds::Duration_t discoveryServer_client_syncperiod = { 0, 450 * 1000000}; // 450 milliseconds
293
294
    //! Discovery Server initial connections, needed if `discoveryProtocol` = CLIENT | SUPER_CLIENT | SERVER | BACKUP
295
    eprosima::fastdds::rtps::LocatorList m_DiscoveryServers;
296
297
    //! Filtering participants out depending on location
298
    ParticipantFilteringFlags ignoreParticipantFlags = ParticipantFilteringFlags::NO_FILTER;
299
300
83.2k
    DiscoverySettings() = default;
301
302
    bool operator ==(
303
            const DiscoverySettings& b) const
304
0
    {
305
0
        return (this->discoveryProtocol == b.discoveryProtocol) &&
306
0
               (this->use_SIMPLE_EndpointDiscoveryProtocol == b.use_SIMPLE_EndpointDiscoveryProtocol) &&
307
0
               (this->use_STATIC_EndpointDiscoveryProtocol == b.use_STATIC_EndpointDiscoveryProtocol) &&
308
0
               (this->discoveryServer_client_syncperiod == b.discoveryServer_client_syncperiod) &&
309
0
               (this->m_PDPfactory == b.m_PDPfactory) &&
310
0
               (this->leaseDuration == b.leaseDuration) &&
311
0
               (this->leaseDuration_announcementperiod == b.leaseDuration_announcementperiod) &&
312
0
               (this->initial_announcements == b.initial_announcements) &&
313
0
               (this->m_simpleEDP == b.m_simpleEDP) &&
314
0
               (this->static_edp_xml_config_ == b.static_edp_xml_config_) &&
315
0
               (this->m_DiscoveryServers == b.m_DiscoveryServers) &&
316
0
               (this->ignoreParticipantFlags == b.ignoreParticipantFlags);
317
0
    }
318
319
    /**
320
     * Set the static endpoint XML configuration.
321
     * @param str URI specifying the static endpoint XML configuration.
322
     * The string could contain a filename (file://) or the XML content directly (data://).
323
     */
324
    void static_edp_xml_config(
325
            const char* str)
326
0
    {
327
0
        static_edp_xml_config_ = str;
328
0
    }
329
330
    /**
331
     * Get the static endpoint XML configuration.
332
     * @return URI specifying the static endpoint XML configuration.
333
     * The string could contain a filename (file://) or the XML content directly (data://).
334
     */
335
    const char* static_edp_xml_config() const
336
0
    {
337
0
        return static_edp_xml_config_.c_str();
338
0
    }
339
340
private:
341
342
    //! URI specifying the static EDP XML configuration, only necessary if use_STATIC_EndpointDiscoveryProtocol=true
343
    //! This string could contain a filename or the XML content directly.
344
    std::string static_edp_xml_config_ = "";
345
};
346
347
/**
348
 * Class BuiltinAttributes, to define the behavior of the RTPSParticipant builtin protocols.
349
 * @ingroup RTPS_ATTRIBUTES_MODULE
350
 */
351
class BuiltinAttributes
352
{
353
public:
354
355
    //! Discovery protocol related attributes
356
    DiscoverySettings discovery_config;
357
358
    //! Indicates to use the WriterLiveliness protocol.
359
    bool use_WriterLivelinessProtocol = true;
360
361
    //! Network Configuration
362
    NetworkConfigSet_t network_configuration = 0;
363
364
    //! Metatraffic Unicast Locator List
365
    LocatorList_t metatrafficUnicastLocatorList;
366
367
    //! Metatraffic Multicast Locator List.
368
    LocatorList_t metatrafficMulticastLocatorList;
369
370
    //! The collection of external locators to use for communication on metatraffic topics.
371
    fastdds::rtps::ExternalLocators metatraffic_external_unicast_locators;
372
373
    //! Initial peers.
374
    LocatorList_t initialPeersList;
375
376
    //! Memory policy for builtin readers
377
    MemoryManagementPolicy_t readerHistoryMemoryPolicy =
378
            MemoryManagementPolicy_t::PREALLOCATED_WITH_REALLOC_MEMORY_MODE;
379
380
    //! Maximum payload size for builtin readers
381
    uint32_t readerPayloadSize = BUILTIN_DATA_MAX_SIZE;
382
383
    //! Memory policy for builtin writers
384
    MemoryManagementPolicy_t writerHistoryMemoryPolicy =
385
            MemoryManagementPolicy_t::PREALLOCATED_WITH_REALLOC_MEMORY_MODE;
386
387
    //! Maximum payload size for builtin writers
388
    uint32_t writerPayloadSize = BUILTIN_DATA_MAX_SIZE;
389
390
    //! Mutation tries if the port is being used.
391
    uint32_t mutation_tries = 100u;
392
393
    //! Set to true to avoid multicast traffic on builtin endpoints
394
    bool avoid_builtin_multicast = true;
395
396
    //! Flow controller name to use for the builtin writers
397
    std::string flow_controller_name = "";
398
399
83.2k
    BuiltinAttributes() = default;
400
401
82.2k
    virtual ~BuiltinAttributes() = default;
402
403
    bool operator ==(
404
            const BuiltinAttributes& b) const
405
0
    {
406
0
        return (this->discovery_config == b.discovery_config) &&
407
0
               (this->use_WriterLivelinessProtocol == b.use_WriterLivelinessProtocol) &&
408
0
               (this->network_configuration == b.network_configuration) &&
409
0
               (this->metatrafficUnicastLocatorList == b.metatrafficUnicastLocatorList) &&
410
0
               (this->metatrafficMulticastLocatorList == b.metatrafficMulticastLocatorList) &&
411
0
               (this->metatraffic_external_unicast_locators == b.metatraffic_external_unicast_locators) &&
412
0
               (this->initialPeersList == b.initialPeersList) &&
413
0
               (this->readerHistoryMemoryPolicy == b.readerHistoryMemoryPolicy) &&
414
0
               (this->readerPayloadSize == b.readerPayloadSize) &&
415
0
               (this->writerHistoryMemoryPolicy == b.writerHistoryMemoryPolicy) &&
416
0
               (this->writerPayloadSize == b.writerPayloadSize) &&
417
0
               (this->mutation_tries == b.mutation_tries) &&
418
0
               (this->flow_controller_name == b.flow_controller_name) &&
419
0
               (this->avoid_builtin_multicast == b.avoid_builtin_multicast);
420
0
    }
421
422
};
423
424
/**
425
 * Class RTPSParticipantAttributes used to define different aspects of a RTPSParticipant.
426
 * @ingroup RTPS_ATTRIBUTES_MODULE
427
 */
428
class RTPSParticipantAttributes
429
{
430
    using FlowControllerDescriptorList = std::vector<std::shared_ptr<fastdds::rtps::FlowControllerDescriptor>>;
431
432
public:
433
434
83.2k
    RTPSParticipantAttributes() = default;
435
436
82.2k
    virtual ~RTPSParticipantAttributes() = default;
437
438
    bool operator ==(
439
            const RTPSParticipantAttributes& b) const
440
0
    {
441
0
        return (this->name == b.name) &&
442
0
               (this->defaultUnicastLocatorList == b.defaultUnicastLocatorList) &&
443
0
               (this->defaultMulticastLocatorList == b.defaultMulticastLocatorList) &&
444
0
               (this->default_external_unicast_locators == b.default_external_unicast_locators) &&
445
0
               (this->ignore_non_matching_locators == b.ignore_non_matching_locators) &&
446
0
               (this->sendSocketBufferSize == b.sendSocketBufferSize) &&
447
0
               (this->listenSocketBufferSize == b.listenSocketBufferSize) &&
448
0
               (this->netmaskFilter == b.netmaskFilter) &&
449
0
               (this->builtin == b.builtin) &&
450
0
               (this->port == b.port) &&
451
0
               (this->userData == b.userData) &&
452
0
               (this->participantID == b.participantID) &&
453
0
               (this->easy_mode_ip == b.easy_mode_ip) &&
454
0
               (this->useBuiltinTransports == b.useBuiltinTransports) &&
455
0
               (this->properties == b.properties) &&
456
0
               (this->prefix == b.prefix) &&
457
0
               (this->flow_controllers == b.flow_controllers) &&
458
0
               (this->builtin_controllers_sender_thread == b.builtin_controllers_sender_thread) &&
459
0
               (this->timed_events_thread == b.timed_events_thread) &&
460
0
#if HAVE_SECURITY
461
0
               (this->security_log_thread == b.security_log_thread) &&
462
0
#endif // if HAVE_SECURITY
463
0
               (this->discovery_server_thread == b.discovery_server_thread) &&
464
0
               (this->typelookup_service_thread == b.typelookup_service_thread) &&
465
0
               (this->builtin_transports_reception_threads == b.builtin_transports_reception_threads);
466
0
467
0
    }
468
469
    /**
470
     * Provides a way of easily configuring transport related configuration on certain pre-defined scenarios with
471
     * certain options.
472
     *
473
     * @param transports Defines the transport configuration scenario to setup.
474
     * @param options Defines the options to be used in the transport configuration.
475
     */
476
    FASTDDS_EXPORTED_API void setup_transports(
477
            fastdds::rtps::BuiltinTransports transports,
478
            const fastdds::rtps::BuiltinTransportsOptions& options = fastdds::rtps::BuiltinTransportsOptions());
479
480
    /**
481
     * Default list of Unicast Locators to be used for any Endpoint defined inside this RTPSParticipant in the case
482
     * that it was defined with NO UnicastLocators. At least ONE locator should be included in this list.
483
     */
484
    LocatorList_t defaultUnicastLocatorList;
485
486
    /**
487
     * Default list of Multicast Locators to be used for any Endpoint defined inside this RTPSParticipant in the
488
     * case that it was defined with NO MulticastLocators. This is usually left empty.
489
     */
490
    LocatorList_t defaultMulticastLocatorList;
491
492
    /**
493
     * The collection of external locators to use for communication on user created topics.
494
     */
495
    fastdds::rtps::ExternalLocators default_external_unicast_locators;
496
497
    /**
498
     * Whether locators that don't match with the announced locators should be kept.
499
     */
500
    bool ignore_non_matching_locators = false;
501
502
    /*!
503
     * @brief Send socket buffer size for the send resource. Zero value indicates to use default system buffer size.
504
     * Default value: 0.
505
     */
506
    uint32_t sendSocketBufferSize = 0;
507
508
    /*! Listen socket buffer for all listen resources. Zero value indicates to use default system buffer size.
509
     * Default value: 0.
510
     */
511
    uint32_t listenSocketBufferSize = 0;
512
513
    //! Netmask filter configuration
514
    fastdds::rtps::NetmaskFilterKind netmaskFilter = fastdds::rtps::NetmaskFilterKind::AUTO;
515
516
    //! Optionally allows user to define the GuidPrefix_t
517
    GuidPrefix_t prefix;
518
519
    FASTDDS_EXPORTED_API inline bool ReadguidPrefix(
520
            const char* pfx)
521
0
    {
522
0
        return bool(std::istringstream(pfx) >> prefix);
523
0
    }
524
525
    //! Builtin parameters.
526
    BuiltinAttributes builtin;
527
528
    //! Port Parameters
529
    PortParameters port;
530
531
    //! User Data of the participant
532
    std::vector<octet> userData;
533
534
    //! Participant ID
535
    int32_t participantID = -1;
536
537
    //! IP of the Host where master Server is located (EASY_MODE context)
538
    std::string easy_mode_ip = "";
539
540
    //! User defined transports to use alongside or in place of builtins.
541
    std::vector<std::shared_ptr<fastdds::rtps::TransportDescriptorInterface>> userTransports;
542
543
    //! Set as false to disable the creation of the default transports.
544
    bool useBuiltinTransports = true;
545
546
    //! Holds allocation limits affecting collections managed by a participant.
547
    RTPSParticipantAllocationAttributes allocation;
548
549
    //! Property policies
550
    PropertyPolicy properties;
551
552
    //! Set the name of the participant.
553
    inline void setName(
554
            const char* nam)
555
1.04k
    {
556
1.04k
        name = nam;
557
1.04k
    }
558
559
    //! Get the name of the participant.
560
    inline const char* getName() const
561
0
    {
562
0
        return name.c_str();
563
0
    }
564
565
    //! Flow controllers.
566
    FlowControllerDescriptorList flow_controllers;
567
568
    //! Thread settings for the builtin flow controllers sender threads
569
    fastdds::rtps::ThreadSettings builtin_controllers_sender_thread;
570
571
    //! Thread settings for the timed events thread
572
    fastdds::rtps::ThreadSettings timed_events_thread;
573
574
    //! Thread settings for the discovery server thread
575
    fastdds::rtps::ThreadSettings discovery_server_thread;
576
577
    //! Thread settings for the builtin TypeLookup service requests and replies threads
578
    fastdds::rtps::ThreadSettings typelookup_service_thread;
579
580
    //! Thread settings for the builtin transports reception threads
581
    fastdds::rtps::ThreadSettings builtin_transports_reception_threads;
582
583
#if HAVE_SECURITY
584
    //! Thread settings for the security log thread
585
    fastdds::rtps::ThreadSettings security_log_thread;
586
#endif // if HAVE_SECURITY
587
588
    /*! Maximum message size used to avoid fragmentation, set ONLY in LARGE_DATA. If this value is
589
     * not zero, the network factory will allow the initialization of UDP transports with maxMessageSize
590
     * higher than 65500K.
591
     */
592
    uint32_t max_msg_size_no_frag = 0;
593
594
private:
595
596
    //! Name of the participant.
597
    fastcdr::string_255 name{"RTPSParticipant"};
598
};
599
600
}  // namespace rtps
601
}  // namespace fastdds
602
}  // namespace eprosima
603
604
#endif  // FASTDDS_RTPS_ATTRIBUTES__RTPSPARTICIPANTATTRIBUTES_HPP