include
ros
transport_subscriber_link.h
Go to the documentation of this file.
1
/*
2
* Copyright (C) 2008, Morgan Quigley and Willow Garage, Inc.
3
*
4
* Redistribution and use in source and binary forms, with or without
5
* modification, are permitted provided that the following conditions are met:
6
* * Redistributions of source code must retain the above copyright notice,
7
* this list of conditions and the following disclaimer.
8
* * Redistributions in binary form must reproduce the above copyright
9
* notice, this list of conditions and the following disclaimer in the
10
* documentation and/or other materials provided with the distribution.
11
* * Neither the names of Stanford University or Willow Garage, Inc. nor the names of its
12
* contributors may be used to endorse or promote products derived from
13
* this software without specific prior written permission.
14
*
15
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
16
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
19
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
20
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
21
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
22
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
23
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
24
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
25
* POSSIBILITY OF SUCH DAMAGE.
26
*/
27
28
#ifndef ROSCPP_TRANSPORT_SUBSCRIBER_LINK_H
29
#define ROSCPP_TRANSPORT_SUBSCRIBER_LINK_H
30
#include "common.h"
31
#include "
subscriber_link.h
"
32
33
#include <boost/signals2/connection.hpp>
34
35
namespace
ros
36
{
37
41
class
ROSCPP_DECL
TransportSubscriberLink
:
public
SubscriberLink
42
{
43
public
:
44
TransportSubscriberLink
();
45
virtual
~
TransportSubscriberLink
();
46
47
//
48
bool
initialize
(
const
ConnectionPtr
& connection);
49
bool
handleHeader(
const
Header
&
header
);
50
51
const
ConnectionPtr
&
getConnection
() {
return
connection_; }
52
53
virtual
void
enqueueMessage(
const
SerializedMessage
& m,
bool
ser,
bool
nocopy);
54
virtual
void
drop();
55
virtual
std::string getTransportType();
56
virtual
std::string getTransportInfo();
57
58
private
:
59
void
onConnectionDropped(
const
ConnectionPtr
& conn);
60
61
void
onHeaderWritten(
const
ConnectionPtr
& conn);
62
void
onMessageWritten(
const
ConnectionPtr
& conn);
63
void
startMessageWrite(
bool
immediate_write);
64
65
bool
writing_message_
;
66
bool
header_written_
;
67
68
ConnectionPtr
connection_
;
69
boost::signals2::connection
dropped_conn_
;
70
71
std::queue<SerializedMessage>
outbox_
;
72
boost::mutex
outbox_mutex_
;
73
bool
queue_full_
;
74
};
75
typedef
boost::shared_ptr<TransportSubscriberLink>
TransportSubscriberLinkPtr
;
76
77
}
// namespace ros
78
79
#endif // ROSCPP_TRANSPORT_SUBSCRIBER_LINK_H
ros::SerializedMessage
ros::TransportSubscriberLinkPtr
boost::shared_ptr< TransportSubscriberLink > TransportSubscriberLinkPtr
Definition:
transport_subscriber_link.h:75
boost::shared_ptr< Connection >
ros::TransportSubscriberLink::outbox_
std::queue< SerializedMessage > outbox_
Definition:
transport_subscriber_link.h:71
ros::TransportSubscriberLink::header_written_
bool header_written_
Definition:
transport_subscriber_link.h:66
ros
ros::Header
ros::TransportSubscriberLink::queue_full_
bool queue_full_
Definition:
transport_subscriber_link.h:73
ros::TransportSubscriberLink::outbox_mutex_
boost::mutex outbox_mutex_
Definition:
transport_subscriber_link.h:72
ros::SubscriberLink
Definition:
subscriber_link.h:50
ros::TransportSubscriberLink::dropped_conn_
boost::signals2::connection dropped_conn_
Definition:
transport_subscriber_link.h:69
subscriber_link.h
ros::TransportSubscriberLink::writing_message_
bool writing_message_
Definition:
transport_subscriber_link.h:65
ros::TransportSubscriberLink::getConnection
const ConnectionPtr & getConnection()
Definition:
transport_subscriber_link.h:51
ros::TransportSubscriberLink::connection_
ConnectionPtr connection_
Definition:
transport_subscriber_link.h:68
ros::TransportSubscriberLink
SubscriberLink handles broadcasting messages to a single subscriber on a single topic.
Definition:
transport_subscriber_link.h:41
initialize
ROSCONSOLE_DECL void initialize()
header
const std::string header
roscpp
Author(s): Morgan Quigley, Josh Faust, Brian Gerkey, Troy Straszheim, Dirk Thomas
, Jacob Perron
autogenerated on Sat Sep 14 2024 02:59:36