123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189 |
- // Copyright 2016 Proyectos y Sistemas de Mantenimiento SL (eProsima).
- //
- // Licensed under the Apache License, Version 2.0 (the "License");
- // you may not use this file except in compliance with the License.
- // You may obtain a copy of the License at
- //
- // http://www.apache.org/licenses/LICENSE-2.0
- //
- // Unless required by applicable law or agreed to in writing, software
- // distributed under the License is distributed on an "AS IS" BASIS,
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- // See the License for the specific language governing permissions and
- // limitations under the License.
- /**
- * @file BuiltinProtocols.h
- *
- */
- #ifndef _FASTDDS_RTPS_BUILTINPROTOCOLS_H_
- #define _FASTDDS_RTPS_BUILTINPROTOCOLS_H_
- #ifndef DOXYGEN_SHOULD_SKIP_THIS_PUBLIC
- #include <list>
- #include <fastdds/rtps/attributes/RTPSParticipantAttributes.h>
- #include <fastdds/rtps/network/NetworkFactory.h>
- namespace eprosima {
- namespace fastdds {
- namespace dds {
- namespace builtin {
- class TypeLookupManager;
- } // namespace builtin
- class ReaderQos;
- class WriterQos;
- } // namespace dds
- } // namespace fastdds
- namespace fastrtps {
- class TopicAttributes;
- namespace rtps {
- class PDP;
- class WLP;
- class RTPSParticipantImpl;
- class RTPSWriter;
- class RTPSReader;
- /**
- * Class BuiltinProtocols that contains builtin endpoints implementing the discovery and liveliness protocols.
- * *@ingroup BUILTIN_MODULE
- */
- class BuiltinProtocols
- {
- friend class RTPSParticipantImpl;
- private:
- BuiltinProtocols();
- virtual ~BuiltinProtocols();
- public:
- /**
- * Initialize the builtin protocols.
- * @param attributes Discovery configuration attributes
- * @param p_part Pointer to the Participant implementation
- * @return True if correct.
- */
- bool initBuiltinProtocols(
- RTPSParticipantImpl* p_part,
- BuiltinAttributes& attributes);
- /**
- * Update the metatraffic locatorlist after it was created. Because when you create
- * the EDP readers you are not sure the selected endpoints can be used.
- * @param loclist LocatorList to update
- * @return True on success
- */
- bool updateMetatrafficLocators(
- LocatorList_t& loclist);
- /**
- * Traverses the list of discover servers translating from remote to local locators
- * if possible
- * @param nf NetworkFactory used to make the translation
- */
- void transform_server_remote_locators(
- NetworkFactory & nf);
- //!BuiltinAttributes of the builtin protocols.
- BuiltinAttributes m_att;
- //!Pointer to the RTPSParticipantImpl.
- RTPSParticipantImpl* mp_participantImpl;
- //!Pointer to the PDPSimple.
- PDP* mp_PDP;
- //!Pointer to the WLP
- WLP* mp_WLP;
- //!Pointer to the TypeLookupManager
- fastdds::dds::builtin::TypeLookupManager* tlm_;
- //!Locator list for metatraffic
- LocatorList_t m_metatrafficMulticastLocatorList;
- //!Locator List for metatraffic unicast
- LocatorList_t m_metatrafficUnicastLocatorList;
- //! Initial peers
- LocatorList_t m_initialPeersList;
- //! Known discovery and backup server container
- std::list<RemoteServerAttributes> m_DiscoveryServers;
- /**
- * Add a local Writer to the BuiltinProtocols.
- * @param w Pointer to the RTPSWriter
- * @param topicAtt Attributes of the associated topic
- * @param wqos QoS policies dictated by the publisher
- * @return True if correct.
- */
- bool addLocalWriter(
- RTPSWriter* w,
- const TopicAttributes& topicAtt,
- const fastdds::dds::WriterQos& wqos);
- /**
- * Add a local Reader to the BuiltinProtocols.
- * @param R Pointer to the RTPSReader.
- * @param topicAtt Attributes of the associated topic
- * @param rqos QoS policies dictated by the subscriber
- * @return True if correct.
- */
- bool addLocalReader(
- RTPSReader* R,
- const TopicAttributes& topicAtt,
- const fastdds::dds::ReaderQos& rqos);
- /**
- * Update a local Writer QOS
- * @param W Writer to update
- * @param topicAtt Attributes of the associated topic
- * @param wqos New Writer QoS
- * @return
- */
- bool updateLocalWriter(
- RTPSWriter* W,
- const TopicAttributes& topicAtt,
- const fastdds::dds::WriterQos& wqos);
- /**
- * Update a local Reader QOS
- * @param R Reader to update
- * @param topicAtt Attributes of the associated topic
- * @param qos New Reader QoS
- * @return
- */
- bool updateLocalReader(
- RTPSReader* R,
- const TopicAttributes& topicAtt,
- const fastdds::dds::ReaderQos& qos);
- /**
- * Remove a local Writer from the builtinProtocols.
- * @param W Pointer to the writer.
- * @return True if correctly removed.
- */
- bool removeLocalWriter(
- RTPSWriter* W);
- /**
- * Remove a local Reader from the builtinProtocols.
- * @param R Pointer to the reader.
- * @return True if correctly removed.
- */
- bool removeLocalReader(
- RTPSReader* R);
- //! Announce RTPSParticipantState (force the sending of a DPD message.)
- void announceRTPSParticipantState();
- //!Stop the RTPSParticipant Announcement (used in tests to avoid multiple packets being send)
- void stopRTPSParticipantAnnouncement();
- //!Reset to timer to make periodic RTPSParticipant Announcements.
- void resetRTPSParticipantAnnouncement();
- };
- }
- } /* namespace rtps */
- } /* namespace eprosima */
- #endif
- #endif /* _FASTDDS_RTPS_BUILTINPROTOCOLS_H_ */
|