Gazebo Transport
API Reference
14.0.0
insert_drive_file
Tutorials
library_books
Classes
toc
Namespaces
insert_drive_file
Files
launch
Gazebo Website
Index
List
Hierarchy
Members: All
Members: Functions
Members: Variables
Members: Typedefs
Members: Enumerations
Members: Enumerator
List
Members
Functions
Typedefs
Variables
Enumerations
Enumerator
src
gz-transport
include
gz
transport
Publisher.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_PUBLISHER_HH_
19
#define GZ_TRANSPORT_PUBLISHER_HH_
20
21
#include <gz/msgs/discovery.pb.h>
22
23
#include <iostream>
24
#include <string>
25
26
#include "
gz/transport/AdvertiseOptions.hh
"
27
#include "gz/transport/config.hh"
28
#include "gz/transport/Export.hh"
29
30
namespace
gz
31
{
32
namespace
transport
33
{
34
// Inline bracket to help doxygen filtering.
35
inline
namespace
GZ_TRANSPORT_VERSION_NAMESPACE {
36
//
37
// Forward declarations.
38
class
MessagePublisherPrivate;
39
44
class
GZ_TRANSPORT_VISIBLE
Publisher
45
{
47
public
:
Publisher
() =
default
;
48
55
public
:
Publisher
(
const
std::string
&_topic,
56
const
std::string
&_addr,
57
const
std::string
&_pUuid,
58
const
std::string
&_nUuid,
59
const
AdvertiseOptions
&_opts);
60
62
public
:
virtual
~Publisher
() =
default
;
63
67
public
:
std::string
Topic
()
const
;
68
72
public
:
std::string
Addr
()
const
;
73
77
public
:
std::string
PUuid
()
const
;
78
82
public
:
std::string
NUuid
()
const
;
83
87
public
:
virtual
const
AdvertiseOptions
&
Options
()
const
;
88
92
public
:
void
SetTopic
(
const
std::string
&_topic);
93
97
public
:
void
SetAddr
(
const
std::string
&_addr);
98
102
public
:
void
SetPUuid
(
const
std::string
&_pUuid);
103
107
public
:
void
SetNUuid
(
const
std::string
&_nUuid);
108
112
public
:
void
SetOptions
(
const
AdvertiseOptions
&_opts);
113
116
public
:
virtual
void
FillDiscovery
(msgs::Discovery &_msg)
const
;
117
120
public
:
virtual
void
SetFromDiscovery
(
const
msgs::Discovery &_msg);
121
127
public
:
bool
operator==
(
const
Publisher
&_pub)
const
;
128
134
public
:
bool
operator!=
(
const
Publisher
&_pub)
const
;
135
139
public
:
friend
std::ostream
&
operator<<
(
std::ostream
&_out,
140
const
Publisher
&_msg)
141
{
142
_out <<
"Publisher:"
<<
std::endl
143
<<
"\tTopic: ["
<< _msg.
Topic
() <<
"]"
<<
std::endl
144
<<
"\tAddress: "
<< _msg.
Addr
() <<
std::endl
145
<<
"\tProcess UUID: "
<< _msg.
PUuid
() <<
std::endl
146
<<
"\tNode UUID: "
<< _msg.
NUuid
() <<
std::endl
147
<< _msg.
Options
();
148
149
return
_out;
150
}
151
152
#ifdef _WIN32
153
// Disable warning C4251 which is triggered by
154
// std::string
155
#pragma warning(push)
156
#pragma warning(disable: 4251)
157
#endif
159
protected
:
std::string
topic
;
160
162
protected
:
std::string
addr
;
163
165
protected
:
std::string
pUuid
;
166
168
protected
:
std::string
nUuid
;
169
#ifdef _WIN32
170
#pragma warning(pop)
171
#endif
172
175
private
:
AdvertiseOptions
opts;
176
};
177
181
class
GZ_TRANSPORT_VISIBLE
MessagePublisher
:
public
Publisher
182
{
184
public
:
MessagePublisher
() =
default
;
185
194
public
:
explicit
MessagePublisher
(
const
std::string
&_topic,
195
const
std::string
&_addr,
196
const
std::string
&_ctrl,
197
const
std::string
&_pUuid,
198
const
std::string
&_nUuid,
199
const
std::string
&_msgTypeName,
200
const
AdvertiseMessageOptions
&_opts);
201
203
public
:
virtual
~MessagePublisher
() =
default
;
204
209
public
:
std::string
Ctrl
()
const
;
210
214
public
:
void
SetCtrl
(
const
std::string
&_ctrl);
215
218
public
:
std::string
MsgTypeName
()
const
;
219
223
public
:
void
SetMsgTypeName
(
const
std::string
&_msgTypeName);
224
228
public
:
virtual
const
AdvertiseMessageOptions
&
Options
()
const
;
229
233
public
:
void
SetOptions
(
const
AdvertiseMessageOptions
&_opts);
234
237
public
:
virtual
void
FillDiscovery
(msgs::Discovery &_msg)
const
final
;
238
241
public
:
virtual
void
SetFromDiscovery
(
const
msgs::Discovery &_msg);
242
246
public
:
friend
std::ostream
&
operator<<
(
std::ostream
&_out,
247
const
MessagePublisher
&_msg)
248
{
249
_out <<
"Publisher:"
<<
std::endl
250
<<
"\tTopic: ["
<< _msg.
Topic
() <<
"]"
<<
std::endl
251
<<
"\tAddress: "
<< _msg.
Addr
() <<
std::endl
252
<<
"\tProcess UUID: "
<< _msg.
PUuid
() <<
std::endl
253
<<
"\tNode UUID: "
<< _msg.
NUuid
() <<
std::endl
254
<<
"\tControl address: "
<< _msg.
Ctrl
() <<
std::endl
255
<<
"\tMessage type: "
<< _msg.
MsgTypeName
() <<
std::endl
256
<< _msg.
Options
();
257
return
_out;
258
}
259
265
public
:
bool
operator==
(
const
MessagePublisher
&_pub)
const
;
266
272
public
:
bool
operator!=
(
const
MessagePublisher
&_pub)
const
;
273
274
#ifdef _WIN32
275
// Disable warning C4251 which is triggered by
276
// std::unique_ptr
277
#pragma warning(push)
278
#pragma warning(disable: 4251)
279
#endif
281
private
:
std::string
ctrl;
282
284
private
:
std::string
msgTypeName;
285
#ifdef _WIN32
286
#pragma warning(pop)
287
#endif
288
290
private
:
AdvertiseMessageOptions
msgOpts;
291
};
292
296
class
GZ_TRANSPORT_VISIBLE
ServicePublisher
:
public
Publisher
297
{
299
public
:
ServicePublisher
() =
default
;
300
310
public
:
ServicePublisher
(
const
std::string
&_topic,
311
const
std::string
&_addr,
312
const
std::string
&_id,
313
const
std::string
&_pUuid,
314
const
std::string
&_nUuid,
315
const
std::string
&_reqType,
316
const
std::string
&_repType,
317
const
AdvertiseServiceOptions
&_opts);
318
320
public
:
virtual
~ServicePublisher
() =
default
;
321
325
public
:
std::string
SocketId
()
const
;
326
330
public
:
void
SetSocketId
(
const
std::string
&_socketId);
331
335
public
:
std::string
ReqTypeName
()
const
;
336
340
public
:
std::string
RepTypeName
()
const
;
341
345
public
:
void
SetReqTypeName
(
const
std::string
&_reqTypeName);
346
350
public
:
void
SetRepTypeName
(
const
std::string
&_repTypeName);
351
355
public
:
virtual
const
AdvertiseServiceOptions
&
Options
()
const
;
356
360
public
:
void
SetOptions
(
const
AdvertiseServiceOptions
&_opts);
361
364
public
:
virtual
void
FillDiscovery
(msgs::Discovery &_msg)
const
final
;
365
369
public
:
virtual
void
SetFromDiscovery
(
const
msgs::Discovery &_msg);
370
374
public
:
friend
std::ostream
&
operator<<
(
std::ostream
&_out,
375
const
ServicePublisher
&_msg)
376
{
377
_out <<
"Publisher:"
<<
std::endl
378
<<
"\tTopic: ["
<< _msg.
Topic
() <<
"]"
<<
std::endl
379
<<
"\tAddress: "
<< _msg.
Addr
() <<
std::endl
380
<<
"\tProcess UUID: "
<< _msg.
PUuid
() <<
std::endl
381
<<
"\tNode UUID: "
<< _msg.
NUuid
() <<
std::endl
382
<<
"\tSocket ID: "
<< _msg.
SocketId
() <<
std::endl
383
<<
"\tRequest type: "
<< _msg.
ReqTypeName
() <<
std::endl
384
<<
"\tResponse type: "
<< _msg.
RepTypeName
() <<
std::endl
385
<< _msg.
Options
();
386
387
return
_out;
388
}
389
395
public
:
bool
operator==
(
const
ServicePublisher
&_srv)
const
;
396
402
public
:
bool
operator!=
(
const
ServicePublisher
&_srv)
const
;
403
404
#ifdef _WIN32
405
// Disable warning C4251 which is triggered by
406
// std::string
407
#pragma warning(push)
408
#pragma warning(disable: 4251)
409
#endif
411
private
:
std::string
socketId;
412
414
private
:
std::string
reqTypeName;
415
417
private
:
std::string
repTypeName;
418
#ifdef _WIN32
419
#pragma warning(pop)
420
#endif
421
423
private
:
AdvertiseServiceOptions
srvOpts;
424
};
425
}
426
}
427
}
428
429
#endif