ddt 1.2.1
Loading...
Searching...
No Matches
ddtMemoryManager.hpp
Go to the documentation of this file.
1
19#ifndef DDTMEMORYMANAGER_HPP_
20#define DDTMEMORYMANAGER_HPP_
21
22#include <boost/circular_buffer.hpp>
23#include <boost/interprocess/containers/string.hpp>
24#pragma GCC diagnostic push
25#pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
26#include <boost/interprocess/managed_shared_memory.hpp>
27/* ignore this boost internal warning from the file above */
28#pragma GCC diagnostic pop
29#include <boost/tokenizer.hpp>
30#include <csignal>
31#include <fstream>
32#include <iostream>
33
34#include "ddt/ddtConstants.hpp"
35#include "ddt/ddtErrorCodes.hpp"
36#include "ddt/ddtLogger.hpp"
38
39namespace ip = boost::interprocess;
40
41namespace ddt {
42
47struct Shm {
51 ip::managed_shared_memory *managed_shm;
52
57
62
67};
68
73 public:
80 DdtMemoryManager(DdtLogger *logger, const std::string broker_port);
81
86
98 int32_t CreateSharedMemory(const std::string data_stream_identifier,
99 const int32_t max_data_sample_size,
100 const int32_t number_of_samples);
101
108 bool DeleteSharedMemory(const std::string data_stream_identifier);
109
116 bool CheckIfShmExists(const std::string data_stream_identifier);
117
123 int32_t get_max_data_sample_size(const std::string data_stream_identifier);
124
130 int32_t get_number_of_samples(const std::string data_stream_identifier);
131
138 const std::string data_stream_identifier);
139
146 std::string get_shm_id(const std::string data_stream_identifier) const;
147
153 std::string get_shm_full_path(const std::string data_stream_identifier) const;
154
160 int32_t GetMaxPossibleBufferSize(const int32_t max_data_sample_size);
161
162 protected:
169 bool CheckSpaceAvailability(const int32_t max_data_sample_size,
170 const int buffer_size);
171
176 const uint64_t GetAvailableSpace();
177
178 private:
185 void Init(DdtLogger *ddt_logger, const std::string broker_port);
186
190 int32_t CreateNewSharedMemory(const std::string data_stream_identifier,
191 const int32_t max_data_sample_size,
192 const int32_t number_of_samples,
193 const std::string shm_id);
194
198 int32_t CreateCircularBuffer(const std::string data_stream_identifier,
199 const int32_t max_data_sample_size,
200 const int32_t number_of_samples);
201
206 std::map<std::string, Shm> shm_map;
207
208 std::mutex shm_mutex;
209 std::string port;
210 DdtLogger *logger;
211
212 const std::string SHM_PATH = "/dev/shm";
213 const int AVAILABLE_POSITION = 3;
214 const int BYTES_PER_KBYTE = 1024;
215 static const int CHAR_LEN = 128;
216 const int PERM_TYPE = 0664;
217 const int NO_SUCH_SHM = 7;
218};
219
220} // namespace ddt
221
222#endif /* DDTMEMORYMANAGER_HPP_ */
223
Definition ddtLogger.hpp:51
Definition ddtMemoryAccessor.hpp:274
Definition ddtMemoryManager.hpp:72
DdtMemoryAccessor * get_memory_accessor(const std::string data_stream_identifier)
Definition ddtMemoryManager.cpp:340
std::string get_shm_full_path(const std::string data_stream_identifier) const
Definition ddtMemoryManager.cpp:47
std::string get_shm_id(const std::string data_stream_identifier) const
Definition ddtMemoryManager.cpp:37
int32_t GetMaxPossibleBufferSize(const int32_t max_data_sample_size)
Definition ddtMemoryManager.cpp:392
bool CheckIfShmExists(const std::string data_stream_identifier)
Definition ddtMemoryManager.cpp:55
bool DeleteSharedMemory(const std::string data_stream_identifier)
Definition ddtMemoryManager.cpp:286
int32_t get_number_of_samples(const std::string data_stream_identifier)
Definition ddtMemoryManager.cpp:327
virtual ~DdtMemoryManager()
const uint64_t GetAvailableSpace()
Definition ddtMemoryManager.cpp:353
DdtMemoryManager(DdtLogger *logger, const std::string broker_port)
Definition ddtMemoryManager.cpp:24
int32_t get_max_data_sample_size(const std::string data_stream_identifier)
Definition ddtMemoryManager.cpp:314
int32_t CreateSharedMemory(const std::string data_stream_identifier, const int32_t max_data_sample_size, const int32_t number_of_samples)
Definition ddtMemoryManager.cpp:68
bool CheckSpaceAvailability(const int32_t max_data_sample_size, const int buffer_size)
Definition ddtMemoryManager.cpp:404
Contains common used constants. This file shall contain constants that can be used by all application...
Contains common used error codes. This file shall contain error codes that can be used by all applica...
Class to wrap the usage of log4cplus as logging utility. This file provides a wrapper class for the u...
Accessor for a shared memory. This class provides the functionalities to access created shared memori...
Definition ddtClient.hpp:39
Definition ddtMemoryManager.hpp:47
int number_of_samples
Definition ddtMemoryManager.hpp:61
int max_data_sample_size
Definition ddtMemoryManager.hpp:56
ip::managed_shared_memory * managed_shm
Definition ddtMemoryManager.hpp:51
DdtMemoryAccessor * memory_accessor
Definition ddtMemoryManager.hpp:66