rgbd
server_shm.h
Go to the documentation of this file.
1 #ifndef RGBD_SERVER_SHM_H_
2 #define RGBD_SERVER_SHM_H_
3 
4 #include <boost/interprocess/shared_memory_object.hpp>
5 #include <boost/interprocess/mapped_region.hpp>
6 
7 #include <ros/node_handle.h>
8 
9 #include "rgbd/image_header.h"
10 #include "rgbd/types.h"
11 
12 #include <memory>
13 #include <thread>
14 
15 
16 namespace rgbd
17 {
18 
22 class ServerSHM
23 {
24 
25 public:
26 
32  ServerSHM();
33 
39  ~ServerSHM();
40 
45  void initialize(const std::string& name);
46 
51  void send(const Image& image);
52 
53 private:
54 
56 
57  boost::interprocess::shared_memory_object shm_;
58 
59  boost::interprocess::mapped_region mem_buffer_header_;
60  boost::interprocess::mapped_region mem_image_;
61 
63  unsigned char* image_data_;
64 
65  uint64_t rgb_data_size_;
66  uint64_t depth_data_size_;
67  uint64_t image_data_size_;
68 
69  ros::NodeHandle nh_; // Nodehandle to stop the SHM check thread
70 
71  // SHM check thread
73 
78  void checkSHMThreadFunc(const float frequency);
79 };
80 
81 void pubHostnameThreadFunc(ros::NodeHandle& nh, const std::string server_name, const std::string hostname, const float frequency);
82 
83 } // end namespace rgbd
84 
85 #endif // RGBD_SERVER_SHM_H_
std::string
types.h
rgbd::ServerSHM::buffer_header_
BufferHeader * buffer_header_
Definition: server_shm.h:62
rgbd::ServerSHM::~ServerSHM
~ServerSHM()
Destructor.
Definition: server_shm.cpp:28
rgbd::pubHostnameThreadFunc
void pubHostnameThreadFunc(ros::NodeHandle &nh, const std::string server_name, const std::string hostname, const float frequency)
Definition: server_shm.cpp:154
rgbd::ServerSHM::checkSHMThreadFunc
void checkSHMThreadFunc(const float frequency)
Check if the SHM can be opened.
Definition: server_shm.cpp:131
rgbd::BufferHeader
Definition: image_header.h:12
rgbd::ServerSHM::rgb_data_size_
uint64_t rgb_data_size_
Definition: server_shm.h:65
rgbd::ServerSHM::ServerSHM
ServerSHM()
Constructor.
Definition: server_shm.cpp:22
rgbd::Image
Definition: image.h:43
thread
rgbd::ServerSHM::check_shm_thread_ptr_
std::unique_ptr< std::thread > check_shm_thread_ptr_
Definition: server_shm.h:72
image_header.h
rgbd
Definition: client.h:24
rgbd::ServerSHM::send
void send(const Image &image)
send Write a new image to the shared memory
Definition: server_shm.cpp:48
rgbd::ServerSHM::image_data_size_
uint64_t image_data_size_
Definition: server_shm.h:67
rgbd::ServerSHM::depth_data_size_
uint64_t depth_data_size_
Definition: server_shm.h:66
memory
rgbd::ServerSHM::initialize
void initialize(const std::string &name)
initialize Initialize shared memory server
Definition: server_shm.cpp:40
rgbd::ServerSHM::image_data_
unsigned char * image_data_
Definition: server_shm.h:63
rgbd::ServerSHM::shared_mem_name_
std::string shared_mem_name_
Definition: server_shm.h:55
rgbd::ServerSHM::shm_
boost::interprocess::shared_memory_object shm_
Definition: server_shm.h:57
rgbd::ServerSHM::nh_
ros::NodeHandle nh_
Definition: server_shm.h:69
std::unique_ptr< std::thread >
rgbd::ServerSHM::mem_buffer_header_
boost::interprocess::mapped_region mem_buffer_header_
Definition: server_shm.h:59
rgbd::ServerSHM::mem_image_
boost::interprocess::mapped_region mem_image_
Definition: server_shm.h:60
rgbd::ServerSHM
Server which uses shared memory, this only works for clients on the same machine.
Definition: server_shm.h:22