23#include <flow/common.hpp>
24#include <boost/array.hpp>
61static_assert(
false,
"IPC_KERNEL_PERSISTENT_RUN_DIR (/var/run) semantics require Unix; "
62 "tested in Linux specifically only.");
111template<
typename Func>
175template<
typename Handle_name_func>
176void for_each_persistent_impl(
const fs::path& persistent_obj_dev_dir_path,
const Handle_name_func& handle_name_func);
190template<
typename Handle_name_func>
String-wrapping abstraction representing a name uniquely distinguishing a kernel-persistent entity fr...
An object of this type, used internally to implement sync_io-pattern objects that require timer event...
Contains common code, as well as important explanatory documentation in the following text,...
std::ostream & operator<<(std::ostream &os, const Timer_event_emitter &val)
Prints string representation of the given Timer_event_emitter to the given ostream.
Flow-IPC module containing miscellaneous general-use facilities that ubiquitously used by ~all Flow-I...
bipc::permissions Permissions
Short-hand for Unix (POSIX) permissions class.
void remove_persistent_shm_pool(flow::log::Logger *logger_ptr, const Shared_name &pool_name, Error_code *err_code)
Equivalent to shm::classic::Pool_arena::remove_persistent().
@ S_END_SENTINEL
Sentinel: not a valid value. May be used to, e.g., size an array<> mapping from Permissions_level.
void for_each_persistent_impl(const fs::path &persistent_obj_dev_dir_path, const Handle_name_func &handle_name_func)
Implementation of Persistent_object::for_each_persistent(); for example see shm::classic::Pool_arena:...
void pipe_produce(flow::log::Logger *logger_ptr, Pipe_writer *pipe)
Writes a byte to the given pipe writer.
const boost::array< Permissions, size_t(Permissions_level::S_END_SENTINEL)> SHARED_RESOURCE_PERMISSIONS_LVL_MAP
Maps general Permissions_level specifier to low-level Permissions value, when the underlying resource...
Shared_name build_conventional_non_session_based_shared_name(const Shared_name &resource_type)
Builds an absolute name according to the path convention explained in Shared_name class doc header; t...
void for_each_persistent_shm_pool(const Handle_name_func &handle_name_func)
Equivalent to shm::classic::Pool_arena::for_each_persistent().
void pipe_consume(flow::log::Logger *logger_ptr, Pipe_reader *pipe)
Reads a byte via the given pipe reader.
boost::asio::writable_pipe Pipe_writer
Short-hand for anonymous pipe write end.
const boost::array< Permissions, size_t(Permissions_level::S_END_SENTINEL)> PRODUCER_CONSUMER_RESOURCE_PERMISSIONS_LVL_MAP
Maps general Permissions_level specifier to low-level Permissions value, when the underlying resource...
const fs::path IPC_KERNEL_PERSISTENT_RUN_DIR
Absolute path to the directory (without trailing separator) in the file system where kernel-persisten...
boost::asio::readable_pipe Pipe_reader
Short-hand for anonymous pipe read end.
void op_with_possible_bipc_exception(flow::log::Logger *logger_ptr, Error_code *err_code, const Error_code &misc_bipc_lib_error, String_view context, const Func &func)
Internal (to ipc) utility that invokes the given function that invokes a boost.interprocess operation...
flow::util::String_view String_view
Short-hand for Flow's String_view.
flow::Error_code Error_code
Short-hand for flow::Error_code which is very common.