File multiprocess_time_series.hpp¶
-
namespace
time_series
Functions
-
void
clear_memory
(std::string segment_id)¶ Wipe out the corresponding shared memory.
Useful if no instances of MultiprocessTimeSeries cleared the memory on destruction. Reusing the segment id of a non-wiped shared memory may result in the newly created instance to hang.
-
template<typename
T
= int>
classMultiprocessTimeSeries
: public internal::TimeSeriesBase<internal::MultiProcesses, T> - #include <multiprocess_time_series.hpp>
Multiprocess Time Series.
Several instances hosted by different processes, if pointing to the same shared memory segment (as specified by the segment_id), may read/write from the same underlying time series.
Public Functions
-
MultiprocessTimeSeries
(std::string segment_id, size_t max_length, bool leader = true, Index start_timeindex = 0) create a new instance pointing to the specified shared memory segment
- Parameters
segment_id
: the id of the segment to point tomax_length
: max number of elements in the time seriesleader
: if true, the shared memory segment will initialize the shared time series, and wiped the related shared memory on destruction. Instantiating a first MultiprocessTimeSeries with leader set to false will result in undefined behavior. When the leader instance is destroyed, other instances are pointing to the shared segment may crash or hang.
-
MultiprocessTimeSeries
(MultiprocessTimeSeries<T> &&other) noexcept
-
std::string
get_raw
(const Index &timeindex) similar to the random access operator, but does not deserialized the accessed element.
If the element is of a fundamental type (or an array of), an std::logic_error is thrown.
Public Static Functions
-
size_t
get_max_length
(const std::string &segment_id) returns the max length used by a leading MultiprocessTimeSeries of the corresponding segment_id
-
Index
get_start_timeindex
(const std::string &segment_id) returns the start index used by a leading MultiprocessTimeSeries of the corresponding segment_id
-
MultiprocessTimeSeries<T>
create_leader
(const std::string &segment_id, size_t max_length, Index start_timeindex = 0) returns a leader instance of MultiprocessTimeSeries<T>
- Parameters
segment_id
: the id of the segment to point tomax_length
: max number of elements in the time series
-
std::shared_ptr<MultiprocessTimeSeries<T>>
create_leader_ptr
(const std::string &segment_id, size_t max_length, Index start_timeindex = 0) same as create_leader but returning a shared_ptr.
-
MultiprocessTimeSeries<T>
create_follower
(const std::string &segment_id) returns a follower instance of MultiprocessTimeSeries<T>.
An follower instance should be created only if a leader instance has been created first. A std::runtime_error will be thrown otherwise.
- Parameters
segment_id
: the id of the segment to point to
-
std::shared_ptr<MultiprocessTimeSeries<T>>
create_follower_ptr
(const std::string &segment_id) same as create_follower but returning a shared_ptr.
Protected Static Functions
-
void
get_max_length_and_start_index_from_leader
(const std::string &segment_id, size_t *max_length, Index *start_timeindex)¶ Load length and start index from leader.
Assumes that a leader time series is already running and providing this information in the shared memory.
- Parameters
[in] segment_id
: The id of the segment to point to.[out] max_length
: The max. length of the time series.[out] start_timeindex
:
- Exceptions
std::runtime_error
: If the data cannot be read from the specified shared memory segment.
-
-
namespace
internal
¶ Functions
-
const std::string shm_indexes ("_indexes")
-
const std::string shm_elements ("_elements")
-
const std::string shm_timestamps ("_timestamps")
-
const std::string shm_mutex ("_mutex")
-
const std::string shm_condition_variable ("_condition_variable")
-
-
void