shape_shifter.cpp
Go to the documentation of this file.
1 /*********************************************************************
2 * Software License Agreement (BSD License)
3 *
4 * Copyright (c) 2009, Willow Garage, Inc.
5 * All rights reserved.
6 *
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions
9 * are met:
10 *
11 * * Redistributions of source code must retain the above copyright
12 * notice, this list of conditions and the following disclaimer.
13 * * Redistributions in binary form must reproduce the above
14 * copyright notice, this list of conditions and the following
15 * disclaimer in the documentation and/or other materials provided
16 * with the distribution.
17 * * Neither the name of Willow Garage, Inc. nor the names of its
18 * contributors may be used to endorse or promote products derived
19 * from this software without specific prior written permission.
20 *
21 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
24 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
25 * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
26 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
27 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
28 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
29 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
30 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
31 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
32 * POSSIBILITY OF SUCH DAMAGE.
33 ********************************************************************/
34 
36 
37 using namespace topic_tools;
38 
39 bool ShapeShifter::uses_old_API_ = false;
40 
42  : typed(false),
43  msgBuf(NULL),
44  msgBufUsed(0),
45  msgBufAlloc(0)
46 {
47 }
48 
49 
51 {
52  if (msgBuf)
53  delete[] msgBuf;
54 
55  msgBuf = NULL;
56  msgBufAlloc = 0;
57 }
58 
59 
60 std::string const& ShapeShifter::getDataType() const { return datatype; }
61 
62 
63 std::string const& ShapeShifter::getMD5Sum() const { return md5; }
64 
65 
66 std::string const& ShapeShifter::getMessageDefinition() const { return msg_def; }
67 
68 
69 void ShapeShifter::morph(const std::string& _md5sum, const std::string& _datatype, const std::string& _msg_def,
70  const std::string& _latching)
71 {
72  md5 = _md5sum;
73  datatype = _datatype;
74  msg_def = _msg_def;
75  latching = _latching;
76  typed = md5 != "*";
77 }
78 
79 
80 ros::Publisher ShapeShifter::advertise(ros::NodeHandle& nh, const std::string& topic, uint32_t queue_size_, bool latch, const ros::SubscriberStatusCallback &connect_cb) const
81 {
82  ros::AdvertiseOptions opts(topic, queue_size_, getMD5Sum(), getDataType(), getMessageDefinition(), connect_cb);
83  opts.latch = latch;
84 
85  return nh.advertise(opts);
86 }
87 
88 
89 uint32_t ShapeShifter::size() const
90 {
91  return msgBufUsed;
92 }
93 
boost::function< void(const SingleSubscriberPublisher &)> SubscriberStatusCallback
std::string const & getMD5Sum() const
void morph(const std::string &md5sum, const std::string &datatype, const std::string &msg_def, const std::string &latching)
uint32_t size() const
Return the size of the serialized message.
std::string const & getMessageDefinition() const
std::string const & getDataType() const
Publisher advertise(const std::string &topic, uint32_t queue_size, bool latch=false)
ros::Publisher advertise(ros::NodeHandle &nh, const std::string &topic, uint32_t queue_size_, bool latch=false, const ros::SubscriberStatusCallback &connect_cb=ros::SubscriberStatusCallback()) const


topic_tools
Author(s): Morgan Quigley, Brian Gerkey, Dirk Thomas
autogenerated on Mon Feb 28 2022 23:34:17