rgbd
client.h
Go to the documentation of this file.
1 
5 #ifndef RGBD_CLIENT_H_
6 #define RGBD_CLIENT_H_
7 
8 #include "rgbd/types.h"
9 #include "rgbd/client_rgbd.h"
10 #include "rgbd/client_shm.h"
11 
12 #include <ros/callback_queue.h>
13 #include <ros/node_handle.h>
14 #include <ros/subscriber.h>
15 #include <ros/time.h>
16 
17 #include <std_msgs/String.h>
18 
19 #include <memory>
20 #include <mutex>
21 #include <thread>
22 
23 
24 namespace rgbd {
25 
29 class Client {
30 
31 public:
32 
36  Client();
37 
41  virtual ~Client();
42 
49  bool initialize(const std::string& server_name, float timeout = 5.0);
50 
55  bool deinitialize();
56 
62  bool initialized() { return static_cast<bool>(nh_); }
63 
70  bool nextImage(Image& image);
71 
78 
79 protected:
80 
81  enum class ClientImplMode {
82  shm,
83  rgbd
84  };
85 
87 
89 
91  ros::CallbackQueue cb_queue_;
92  ros::Subscriber sub_shm_hosts_;
93 
96 
98 
100 
103 
104  void hostsCallback(const std_msgs::StringConstPtr& msg);
105 
106  void subHostsThreadFunc(const float frequency);
107 
108 };
109 
110 }
111 
112 #endif // RGBD_CLIENT_H_
std::string
std::shared_ptr
rgbd::Client::hostname_
std::string hostname_
Definition: client.h:94
rgbd::Client::hostsCallback
void hostsCallback(const std_msgs::StringConstPtr &msg)
Definition: client.cpp:98
types.h
rgbd::Client::sub_hosts_thread_
std::thread sub_hosts_thread_
Definition: client.h:99
client_shm.h
rgbd::Client::switch_impl_mutex_
std::mutex switch_impl_mutex_
Definition: client.h:102
client_rgbd.h
rgbd::Client::~Client
virtual ~Client()
Destructor.
Definition: client.cpp:27
rgbd::Image
Definition: image.h:43
rgbd::Client::initialized
bool initialized()
Check if the client is initialized. Checks if nh_ is exists. nextImage will not return an image if cl...
Definition: client.h:62
thread
rgbd::Client::client_rgbd_
ClientRGBD client_rgbd_
Definition: client.h:86
rgbd::Client::deinitialize
bool deinitialize()
Calls deinitialize on implementation clients. Shutsdown both implementations and deletes nh_....
Definition: client.cpp:54
rgbd::Client::initialize
bool initialize(const std::string &server_name, float timeout=5.0)
Initialize the client.
Definition: client.cpp:34
rgbd
Definition: client.h:24
rgbd::Client::last_time_shm_server_online_
ros::WallTime last_time_shm_server_online_
Definition: client.h:97
rgbd::Client::Client
Client()
Constructor.
Definition: client.cpp:20
rgbd::Client::server_name_
std::string server_name_
Definition: client.h:95
rgbd::Client::nextImage
ImagePtr nextImage()
Get a new Image. If no new image has been received since the last call, The ImagePtr will be a nullpt...
Definition: client.cpp:87
rgbd::ClientRGBD
Client which subscribes to RGBD topic.
Definition: client_rgbd.h:22
memory
rgbd::Client::cb_queue_
ros::CallbackQueue cb_queue_
Definition: client.h:91
rgbd::Client::sub_shm_hosts_
ros::Subscriber sub_shm_hosts_
Definition: client.h:92
rgbd::Client::ClientImplMode::shm
@ shm
rgbd::Client::ClientImplMode
ClientImplMode
Definition: client.h:81
mutex
rgbd::Client
Client which uses the interfaces of ClientRGBD and ClientSHM.
Definition: client.h:29
rgbd::Client::client_impl_mode_
ClientImplMode client_impl_mode_
Definition: client.h:101
rgbd::Client::subHostsThreadFunc
void subHostsThreadFunc(const float frequency)
Definition: client.cpp:109
std::unique_ptr< ros::NodeHandle >
rgbd::ClientSHM
Client which uses shared memory, requires a server on the same machine.
Definition: client_shm.h:16
rgbd::Client::nh_
std::unique_ptr< ros::NodeHandle > nh_
Definition: client.h:90
rgbd::Client::client_shm_
ClientSHM client_shm_
Definition: client.h:88