udp_socket_session.h
Go to the documentation of this file.
1 
34 #ifndef ROSSERIAL_SERVER_UDP_SOCKET_SESSION_H
35 #define ROSSERIAL_SERVER_UDP_SOCKET_SESSION_H
36 
37 #include <iostream>
38 #include <boost/bind.hpp>
39 #include <boost/asio.hpp>
40 
41 #include <ros/ros.h>
42 
45 
46 
47 namespace rosserial_server
48 {
49 
50 using boost::asio::ip::udp;
51 
52 class UdpSocketSession : public Session<UdpStream>
53 {
54 public:
55  UdpSocketSession(boost::asio::io_service& io_service,
56  udp::endpoint server_endpoint,
57  udp::endpoint client_endpoint)
58  : Session(io_service), timer_(io_service),
59  server_endpoint_(server_endpoint), client_endpoint_(client_endpoint)
60  {
61  ROS_INFO_STREAM("rosserial_server UDP session created between " << server_endpoint << " and " << client_endpoint);
63  }
64 
65 private:
67  {
68  if (!is_active())
69  {
71  start();
72  }
73 
74  // Every second, check again if the connection should be reinitialized,
75  // if the ROS node is still up.
76  if (ros::ok())
77  {
78  timer_.expires_from_now(boost::posix_time::milliseconds(2000));
79  timer_.async_wait(boost::bind(&UdpSocketSession::check_connection, this));
80  }
81  else
82  {
83  shutdown();
84  }
85  }
86 
87  boost::asio::deadline_timer timer_;
88  udp::endpoint server_endpoint_;
89  udp::endpoint client_endpoint_;
90 };
91 
92 } // namespace
93 
94 #endif // ROSSERIAL_SERVER_UDP_SOCKET_SESSION_H
udp_stream.h
Adapter which allows a single-ended UDP connection to present the stream interface.
ros.h
rosserial_server::Session
Definition: session.h:60
rosserial_server::UdpSocketSession::check_connection
void check_connection()
Definition: udp_socket_session.h:66
ros::ok
ROSCPP_DECL bool ok()
rosserial_server::UdpStream::open
void open(udp::endpoint server_endpoint, udp::endpoint client_endpoint)
Definition: udp_stream.h:63
rosserial_server::UdpSocketSession::server_endpoint_
udp::endpoint server_endpoint_
Definition: udp_socket_session.h:88
rosserial_server::UdpSocketSession
Definition: udp_socket_session.h:52
rosserial_server::UdpSocketSession::UdpSocketSession
UdpSocketSession(boost::asio::io_service &io_service, udp::endpoint server_endpoint, udp::endpoint client_endpoint)
Definition: udp_socket_session.h:55
ROS_INFO_STREAM
#define ROS_INFO_STREAM(args)
rosserial_server::Session< UdpStream >::shutdown
void shutdown()
Definition: session.h:141
rosserial_server::Session< UdpStream >::socket
UdpStream & socket()
Definition: session.h:93
rosserial_server::Session< UdpStream >::start
void start()
Definition: session.h:98
rosserial_server::UdpSocketSession::timer_
boost::asio::deadline_timer timer_
Definition: udp_socket_session.h:87
session.h
Class representing a session between this node and a templated rosserial client.
rosserial_server::UdpSocketSession::client_endpoint_
udp::endpoint client_endpoint_
Definition: udp_socket_session.h:89
rosserial_server
Definition: async_read_buffer.h:48
rosserial_server::Session< UdpStream >::is_active
bool is_active()
Definition: session.h:150


rosserial_server
Author(s): Mike Purvis
autogenerated on Wed Mar 2 2022 00:58:14