19#ifndef FASTDDS_RTPS_COMMON__LOCATORLIST_HPP
20#define FASTDDS_RTPS_COMMON__LOCATORLIST_HPP
22#include <fastdds/fastdds_dll.hpp>
24#include <fastdds/rtps/common/Locator.hpp>
25#include <fastdds/rtps/common/LocatorsIterator.hpp>
26#include <fastdds/utils/collections/ResourceLimitedVector.hpp>
73 return it_ ==
static_cast<const Locators&
>(other).it_;
79 return it_ !=
static_cast<const Locators&
>(other).it_;
100 using value_type =
typename std::vector<Locator>::value_type;
115 : m_locators(list.m_locators)
122 : m_locators(
std::move(list.m_locators))
130 m_locators = list.m_locators;
138 m_locators = std::move(list.m_locators);
146 if (locator_list.m_locators.size() == m_locators.size())
148 bool returnedValue =
true;
150 for (
auto it = locator_list.m_locators.begin(); returnedValue &&
151 it != locator_list.m_locators.end(); ++it)
153 returnedValue =
false;
155 for (
auto it2 = m_locators.begin(); !returnedValue && it2 != m_locators.end(); ++it2)
159 returnedValue =
true;
164 return returnedValue;
174 return !(*
this == locator_list);
184 return m_locators.begin();
194 return m_locators.end();
204 return m_locators.begin();
214 return m_locators.end();
222 FASTDDS_EXPORTED_API
size_t size()
const
224 return m_locators.size();
236 if (!(*
this == list))
238 m_locators = list.m_locators;
248 return m_locators.clear();
259 return m_locators.reserve(num);
272 return m_locators.resize(num);
283 bool already =
false;
294 m_locators.push_back(loc);
306 for (
auto it = locList.m_locators.begin(); it != locList.m_locators.end(); ++it)
317 FASTDDS_EXPORTED_API
bool empty()
const
319 return m_locators.empty();
330 auto it = std::find(m_locators.begin(), m_locators.end(), loc);
331 if (it != m_locators.end())
333 m_locators.erase(it);
359 FASTDDS_EXPORTED_API
void swap(
362 this->m_locators.swap(locatorList.m_locators);
369 for (
auto& loc : m_locators)
371 if ( kind == loc.kind )
384 for (
auto& locator : m_locators)
392 std::vector<Locator> m_locators;
406 std::ostream& output,
410 if (!locList.
empty())
412 output << *(locList.
begin());
413 for (
auto it = locList.
begin() + 1; it != locList.
end(); ++it)
415 output <<
"," << *it;
440 std::istream::sentry s(input);
447 std::ios_base::iostate excp_mask = input.exceptions();
451 input.exceptions(excp_mask | std::ios_base::failbit | std::ios_base::badbit);
458 input >> loc >> punct;
459 if (loc.
kind != LOCATOR_KIND_INVALID)
465 catch (std::ios_base::failure& )
468 EPROSIMA_LOG_WARNING(LOCATOR_LIST,
"Error deserializing LocatorList");
471 input.exceptions(excp_mask);
Resource limited wrapper of std::vector.
Definition ResourceLimitedVector.hpp:59
pointer emplace_back(Args &&... args)
Construct and insert element at the end.
Definition ResourceLimitedVector.hpp:217
Class Locator_t, uniquely identifies a communication channel for a particular transport.
Definition Locator.hpp:71
int32_t kind
Specifies the locator type.
Definition Locator.hpp:87
Class LocatorList, a Locator vector that doesn't allow duplicates.
Definition LocatorList.hpp:97
FASTDDS_EXPORTED_API void clear()
Erase all locators from the container.
Definition LocatorList.hpp:246
FASTDDS_EXPORTED_API LocatorList & operator=(const LocatorList &list)
Copy assignment.
Definition LocatorList.hpp:127
FASTDDS_EXPORTED_API LocatorList(LocatorList &&list)
Move constructor.
Definition LocatorList.hpp:120
bool has_kind() const
Definition LocatorList.hpp:367
FASTDDS_EXPORTED_API LocatorList & assign(const LocatorList &list)
Replace the contents of the container.
Definition LocatorList.hpp:233
FASTDDS_EXPORTED_API void push_back(const LocatorList &locList)
Add several locators to the end if not already present within the list.
Definition LocatorList.hpp:303
FASTDDS_EXPORTED_API void swap(LocatorList &locatorList)
exchange the content of the container.
Definition LocatorList.hpp:359
FASTDDS_EXPORTED_API void copy_to(eprosima::fastdds::ResourceLimitedVector< Locator > &locator_list) const
Definition LocatorList.hpp:381
FASTDDS_EXPORTED_API LocatorListConstIterator end() const
Return a constant iterator to the end.
Definition LocatorList.hpp:212
FASTDDS_EXPORTED_API LocatorList(const LocatorList &list)
Copy constructor.
Definition LocatorList.hpp:113
FASTDDS_EXPORTED_API LocatorListConstIterator begin() const
Return a constant iterator to the beginning.
Definition LocatorList.hpp:202
FASTDDS_EXPORTED_API bool operator!=(const LocatorList &locator_list) const
Not equal to operator.
Definition LocatorList.hpp:171
FASTDDS_EXPORTED_API bool isValid() const
Check that every locator contained in the list is not LOCATOR_KIND_INVALID.
Definition LocatorList.hpp:342
FASTDDS_EXPORTED_API LocatorListIterator end()
Return an iterator to the end.
Definition LocatorList.hpp:192
FASTDDS_EXPORTED_API LocatorListIterator begin()
Return an iterator to the beginning.
Definition LocatorList.hpp:182
FASTDDS_EXPORTED_API size_t size() const
Return the number of locators.
Definition LocatorList.hpp:222
FASTDDS_EXPORTED_API ~LocatorList()
Destructor.
Definition LocatorList.hpp:108
FASTDDS_EXPORTED_API void erase(const Locator &loc)
Erase the specified locator from the container.
Definition LocatorList.hpp:327
FASTDDS_EXPORTED_API void push_back(const Locator &loc)
Add locator to the end if not found within the list.
Definition LocatorList.hpp:280
FASTDDS_EXPORTED_API LocatorList()
Constructor.
Definition LocatorList.hpp:103
FASTDDS_EXPORTED_API void reserve(size_t num)
Reserve storage increasing the capacity of the vector.
Definition LocatorList.hpp:256
FASTDDS_EXPORTED_API bool empty() const
Check that the container has no locators.
Definition LocatorList.hpp:317
typename std::vector< Locator >::value_type value_type
Definition LocatorList.hpp:100
FASTDDS_EXPORTED_API void resize(size_t num)
Resize the container to contain num locators.
Definition LocatorList.hpp:269
FASTDDS_EXPORTED_API bool operator==(const LocatorList &locator_list) const
Equal to operator.
Definition LocatorList.hpp:143
Adapter class that provides a LocatorsIterator interface from a LocatorListConstIterator.
Definition LocatorList.hpp:47
LocatorsIterator & operator++()
Increment operator.
Definition LocatorList.hpp:64
bool operator!=(const LocatorsIterator &other) const
Not equal to operator.
Definition LocatorList.hpp:76
Locators(const LocatorListConstIterator &it)
Constructor.
Definition LocatorList.hpp:51
const Locator & operator*() const
Dereference operator.
Definition LocatorList.hpp:82
bool operator==(const LocatorsIterator &other) const
Equal to operator.
Definition LocatorList.hpp:70
Locators(const Locators &other)
Copy constructor.
Definition LocatorList.hpp:58
std::istream & operator>>(std::istream &input, EntityId_t &enP)
Definition EntityId_t.hpp:289
std::ostream & operator<<(std::ostream &output, BuiltinTransports transports)
Definition BuiltinTransports.hpp:117
bool IsLocatorValid(const Locator_t &loc)
Auxiliary method to check that locator kind is not LOCATOR_KIND_INVALID (-1).
Definition Locator.hpp:233
eprosima::fastdds::rtps::Locators Locators
Definition LocatorList.hpp:477
std::vector< Locator_t >::const_iterator LocatorListConstIterator
Constant iterator to iterate over a vector of locators.
Definition Locator.hpp:513
std::vector< Locator_t >::iterator LocatorListIterator
Iterator to iterate over a vector of locators.
Definition Locator.hpp:512
Definition EntityId_t.hpp:388
Provides a Locator's iterator interface that can be used by different Locator's containers.
Definition LocatorsIterator.hpp:33