Gazebo Transport

API Reference

14.0.0
AdvertiseOptions.hh
Go to the documentation of this file.
1/*
2 * Copyright (C) 2015 Open Source Robotics Foundation
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 *
16*/
17
18#ifndef GZ_TRANSPORT_ADVERTISEOPTIONS_HH_
19#define GZ_TRANSPORT_ADVERTISEOPTIONS_HH_
20
21#include <cstdint>
22#include <iostream>
23#include <memory>
24
25#include "gz/transport/config.hh"
26#include "gz/transport/Export.hh"
27
28namespace gz
29{
30 namespace transport
31 {
32 // Inline bracket to help doxygen filtering.
33 inline namespace GZ_TRANSPORT_VERSION_NAMESPACE {
34 //
35 // Forward declarations.
36 class AdvertiseOptionsPrivate;
37 class AdvertiseMessageOptionsPrivate;
38 class AdvertiseServiceOptionsPrivate;
39
42 enum class Scope_t
43 {
46 PROCESS,
49 HOST,
51 ALL
52 };
53
59 class GZ_TRANSPORT_VISIBLE AdvertiseOptions
60 {
63
66 public: AdvertiseOptions(const AdvertiseOptions &_other);
67
69 public: virtual ~AdvertiseOptions();
70
75
80 public: bool operator==(const AdvertiseOptions &_other) const;
81
86 public: bool operator!=(const AdvertiseOptions &_other) const;
87
91 public: friend std::ostream &operator<<(std::ostream &_out,
92 const AdvertiseOptions &_other)
93 {
94 _out << "Advertise options:\n"
95 << "\tScope: ";
96 if (_other.Scope() == Scope_t::PROCESS)
97 _out << "Process" << std::endl;
98 else if (_other.Scope() == Scope_t::HOST)
99 _out << "Host" << std::endl;
100 else
101 _out << "All" << std::endl;
102 return _out;
103 }
104
109 public: const Scope_t &Scope() const;
110
115 public: void SetScope(const Scope_t &_scope);
116
117#ifdef _WIN32
118// Disable warning C4251 which is triggered by
119// std::unique_ptr
120#pragma warning(push)
121#pragma warning(disable: 4251)
122#endif
126#ifdef _WIN32
127#pragma warning(pop)
128#endif
129 };
130
134 class GZ_TRANSPORT_VISIBLE AdvertiseMessageOptions
135 : public AdvertiseOptions
136 {
139
143
145 public: virtual ~AdvertiseMessageOptions();
146
151 const AdvertiseMessageOptions &_other);
152
157 public: bool operator==(const AdvertiseMessageOptions &_other) const;
158
163 public: bool operator!=(const AdvertiseMessageOptions &_other) const;
164
168 public: friend std::ostream &operator<<(std::ostream &_out,
169 const AdvertiseMessageOptions &_other)
170 {
171 _out << static_cast<AdvertiseOptions>(_other);
172 if (_other.Throttled())
173 {
174 _out << "\tThrottled? Yes" << std::endl;
175 _out << "\tRate: " << _other.MsgsPerSec() << " msgs/sec" << std::endl;
176 }
177 else
178 _out << "\tThrottled? No" << std::endl;
179
180 return _out;
181 }
182
187 public: bool Throttled() const;
188
191 public: uint64_t MsgsPerSec() const;
192
198 public: void SetMsgsPerSec(const uint64_t _newMsgsPerSec);
199
200#ifdef _WIN32
201// Disable warning C4251 which is triggered by
202// std::unique_ptr
203#pragma warning(push)
204#pragma warning(disable: 4251)
205#endif
209#ifdef _WIN32
210#pragma warning(pop)
211#endif
212 };
213
216 class GZ_TRANSPORT_VISIBLE AdvertiseServiceOptions
217 : public AdvertiseOptions
218 {
221
225
227 public: virtual ~AdvertiseServiceOptions();
228
233 const AdvertiseServiceOptions &_other);
234
239 public: bool operator==(const AdvertiseServiceOptions &_other) const;
240
245 public: bool operator!=(const AdvertiseServiceOptions &_other) const;
246
250 public: friend std::ostream &operator<<(std::ostream &_out,
251 const AdvertiseServiceOptions &_other)
252 {
253 _out << static_cast<AdvertiseOptions>(_other);
254 return _out;
255 }
256
257#ifdef _WIN32
258// Disable warning C4251 which is triggered by
259// std::unique_ptr
260#pragma warning(push)
261#pragma warning(disable: 4251)
262#endif
266#ifdef _WIN32
267#pragma warning(pop)
268#endif
269 };
270 }
271 }
272}
273#endif