Template Class RealtimeBoxBestEffort
Defined in File realtime_box_best_effort.h
Class Documentation
-
template<class T, typename mutex_type = std::mutex>
class RealtimeBoxBestEffort A Box that ensures thread safe access to the boxed contents. Access is best effort. If it can not lock it will return.
NOTE about pointers: You can use pointers with this box but the access will be different. Only use the get/set methods that take function pointer for accessing the internal value.
Public Functions
-
template<typename U = T>
inline constexpr RealtimeBoxBestEffort(const std::initializer_list<U> &init, std::enable_if_t<std::is_constructible_v<U, std::initializer_list>>)
-
template<typename U = T>
inline std::enable_if_t<!is_ptr_or_smart_ptr<U>, bool> trySet(const T &value) set a new content with best effort
Note
disabled for pointer types
- Returns:
false if mutex could not be locked
-
inline bool trySet(const std::function<void(T&)> &func)
access the content readable with best effort
Note
only safe way to access pointer type content (rw)
- Returns:
false if the mutex could not be locked
-
template<typename U = T>
inline std::enable_if_t<!is_ptr_or_smart_ptr<U>, std::optional<U>> tryGet() const get the content with best effort
- Returns:
std::nullopt if content could not be access, otherwise the content is returned
-
inline bool tryGet(const std::function<void(const T&)> &func)
access the content (r) with best effort
Note
only safe way to access pointer type content (r)
- Returns:
false if the mutex could not be locked
-
template<typename U = T>
inline std::enable_if_t<!is_ptr_or_smart_ptr<U>, void> set(const T &value) set the content and wait until the mutex could be locked (RealtimeBox behavior)
- Returns:
true
-
inline void set(const std::function<void(T&)> &func)
access the content (rw) and wait until the mutex could locked
-
template<typename U = T>
inline std::enable_if_t<!is_ptr_or_smart_ptr<U>, U> get() const get the content and wait until the mutex could be locked (RealtimeBox behaviour)
- Returns:
copy of the value
-
template<typename U = T>
inline std::enable_if_t<!is_ptr_or_smart_ptr<U>, void> get(T &in) const get the content and wait until the mutex could be locked
Note
same signature as in the existing RealtimeBox<T>
-
inline void get(const std::function<void(const T&)> &func)
access the content (r) and wait until the mutex could be locked
Note
only safe way to access pointer type content (r)
Note
same signature as in the existing RealtimeBox<T>
-
template<typename U = T>
inline std::enable_if_t<!is_ptr_or_smart_ptr<U>, void> operator=(const T &value) provide a custom assignment operator for easier usage
Note
only to be used from non-RT!
-
template<typename U = T, typename = typename std::enable_if_t<!is_ptr_or_smart_ptr<U>>>
inline operator T() const provide a custom conversion operator
Note
Can only be used from non-RT!
-
template<typename U = T, typename = typename std::enable_if_t<!is_ptr_or_smart_ptr<U>>>
inline operator std::optional<T>() const provide a custom conversion operator
Note
Can be used from non-RT and RT contexts
-
template<typename U = T>