Flow 1.0.0
Flow project: Public API.
Namespace List
Here is a list of all documented namespaces with brief descriptions:
[detail level 1234]
 NflowCatch-all namespace for the Flow project: A collection of various production-quality modules written in modern C++17, originally by ygoldfel
 NasyncFlow module containing tools enabling multi-threaded event loops operating under the asynchronous-task proactor pattern, by providing a streamlined API around boost.asio event loops with added advanced task- and thread-scheduling features
 CConcurrent_task_loopThe core flow::async interface, providing an optionally multi-threaded thread pool onto which runnable Tasks, optionally arranged into concurrency-avoiding Ops, can be boost.asio-posted for subsequent execution
 CCross_thread_task_loopConcrete Concurrent_task_loop that is able to efficiently schedule Tasks within a given Op to execute in different threads while still properly avoiding concurrency
 COp_listSimple, immutable vector-like sequence of N opaque async::Op objects, usually corresponding to N worker threads, with typically used operations such as [index] and random Op selection
 CSegregated_thread_task_loopConcrete Concurrent_task_loop that uses the legacy pin-Tasks-within-1-Op-to-1-thread method of achieving required non-concurrency of Tasks
 CSingle_thread_task_loopA Concurrent_task_loop-related adapter-style class that represents a single-thread task loop; essentially it is pleasant syntactic sugar around a Concurrent_task_loop impl that cuts out concepts that become irrelevant with only one thread involved
 CTimed_concurrent_task_loopDecorates a general – potentially multi-threaded – Concurrent_task_loop of any kind but with timing capabilities
 CTimed_concurrent_task_loop_implDecorator of a Concurrent_task_loop with same or greater lifetime that accumulates time elapsed in any tasks posted or scheduled onto that loop
 CTimed_single_thread_task_loopIdentical to Single_thread_task_loop, but all tasks posted through it are automatically timed, with the result accessible via accumulated_time()
 NcfgFlow module that facilitates configuring modules, such as applications and APIs, via statically and/or dynamically parsed sets of name/value pairs from config sources like files and command lines
 NfsShort-hand for namespace boost::filesystem
 NoptsShort-hand for namespace boost::program_options
 CConfig_managerManages a config setup, intended for a single daemon process, by maintaining 1 or more set(s) of static config and dynamic config, each, via that number of Option_set<>-ready raw value struct types supplied by the user as template arguments
 COn_dynamic_change_func_handleOpaque handle for managing a dynamic config change callback
 CDynamic_cfg_contextClass which facilitates managing access to a dynamic configuration
 CFinal_validator_funcUtility/traits type to concisely work with final-validation functions when calling methods like Config_manager::apply_static()
 CNull_value_setEmpty struct suitable as a *_value_set template arg for Config_manager, when a slot requires a Value_set, but you have no config to actually parse there
 COption_setThe core config-parsing facility, which builds parsing/comparison/output capabilities on top of a given simple config-holding object, of the type Value_set, a template argument to this class template
 CDeclare_options_func_argsInternal-use structure to use with Declare_options_func callback
 COption_set_baseUn-templated base for Option_set
 CStatic_config_managerA Config_manager-related adapter-style class that manages a simple config setup involving a single (though arbitrarily complex) Option_set<>-ready raw value struct config store type Value_set, meant to be used only in static fashion
 NerrorFlow module that facilitates working with error codes and exceptions; essentially comprised of niceties on top boost.system's error facility
 CRuntime_errorAn std::runtime_error (which is an std::exception) that stores an Error_code
 NlogFlow module providing logging functionality
 NfsShort-hand for namespace boost::filesystem
 CAsync_file_loggerAn implementation of Logger that logs messages to a given file-system path but never blocks any logging thread for file I/O; suitable for heavy-duty file logging
 CThrottling_cfgControls behavior of the throttling algorithm as described in Async_file_logger doc header Throttling section
 CBuffer_loggerAn implementation of Logger that logs messages to an internal std::string buffer and provides read-only access to this buffer (for example, if one wants to write out its contents when exiting program)
 CComponentA light-weight class, each object storing a component payload encoding an enum value from enum type of user's choice, and a light-weight ID of that enum type itself
 CConfigClass used to configure the filtering and logging behavior of Loggers; its use in your custom Loggers is optional but encouraged; supports dynamically changing filter settings even while concurrent logging occurs
 CLog_contextConvenience class that simply stores a Logger and/or Component passed into a constructor; and returns this Logger and Component via get_logger() and get_log_component() public accessors
 CLoggerInterface that the user should implement, passing the implementing Logger into logging classes (Flow's own classes like net_flow::Node; and user's own logging classes) at construction (plus free/static logging functions)
 CMsg_metadataSimple data store containing all of the information generated at every logging call site by flow::log, except the message itself, which is passed to Logger::do_log() assuming Logger::should_log() had returned true
 COstream_log_msg_writerUtility class, each object of which wraps a given ostream and outputs discrete messages to it adorned with time stamps and other formatting such as separating newlines
 CSimple_ostream_loggerAn implementation of Logger that logs messages to the given ostreams (e.g., cout or an ofstream for a file)
 CVerbosity_configOptional-use structure encapsulating a full set of verbosity config, such that one can parse it from a config source (like an options file) in concise form and apply it to a log::Config object
 Nnet_flowFlow module containing the API and implementation of the Flow network protocol, a TCP-inspired stream protocol that uses UDP as underlying transport
 NasioContains classes that add boost.asio integration to the main Flow-protocol classes such as net_flow::Node and net_flow::Peer_socket, so that net_flow sockets can be easily used in boost.asio-driven event loops, e.g., ones also performing TCP networking and scheduling timers
 CNodeA subclass of net_flow::Node that adds the ability to easily and directly use net_flow sockets in general boost.asio event loops
 CPeer_socketA net_flow::Peer_socket that adds integration with boost.asio
 CServer_socketA net_flow::Server_socket that adds integration with boost.asio
 NerrorNamespace containing the net_flow module's extension of boost.system error conventions, so that Flow network protocol API can return codes/messages from within its own new set of error codes/messages
 CEvent_setA user-set collection of sockets and desired conditions on those sockets (such as: "socket has data to read"), with the ability to wait for those conditions to become true and signal the user when so
 CSocket_as_any_equalsEquality predicate class used in storing various sockets of types wrapped as boost::anys in the Sockets type
 CSocket_as_any_hashHasher class used in storing various sockets of types wrapped as boost::anys in the Sockets type
 CNet_env_simulatorObjects of this class can be fed to Node to make it internally simulate network conditions like loss, latency, and data duplication
 CNodeAn object of this class is a single Flow-protocol networking node, in the sense that: (1) it has a distinct IP address and UDP port; and (2) it speaks the Flow protocol over a UDP transport layer
 CNode_optionsA set of low-level options affecting a single Flow Node, including Peer_socket objects and other objects subsequently generated by that Flow Node
 CPeer_socketA peer (non-server) socket operating over the Flow network protocol, with optional stream-of-bytes and reliability support
 CPeer_socket_infoA data store that keeps stats about the a Peer_socket connection
 CPeer_socket_optionsA set of low-level options affecting a single Peer_socket
 CPeer_socket_receive_statsA data store that keeps stats about the incoming direction of a Peer_socket connection to another Flow-protocol Peer_socket
 CPeer_socket_send_statsA data store that keeps stats about the outgoing direction of a Peer_socket connection to another Flow-protocol Peer_socket
 CRemote_endpointRepresents the remote endpoint of a Flow-protocol connection; identifies the UDP endpoint of the remote Node and the logical Flow-protocol port within that Node
 CServer_socketA server socket able to listen on a single Flow port for incoming connections and return peer sockets (Peer_socket objects) to the local user once such connections are established
 NperfFlow module containing tools for profiling and optimization
 CCheckpointing_timerThe central class in the perf Flow module, this efficiently times the user's operation, with a specified subset of timing methods; and with the optional ability to time intermediate checkpoints within the overall operation
 CAggregatorThis companion/inner class of Checkpointing_timer provides aggregation of results from many Checkpointing_timers each measuring some user operation being repeated many times; particularly when the operation consists of multiple steps (checkpoints) of interest
 CCheckpointThe entirety of the information recorded with each Checkpointing_timer::checkpoint() call; it contains the Duration values (for each Clock_type) with the time elapsed since either the preceding T.checkpoint() or construction
 CDuration_setConvenience wrapper around an array<Duration, N>, which stores a duration for each of the N possible clock types in perf::Clock_type
 CTime_pt_setConvenience wrapper around an array<Time_pt, N>, which stores a time point for each of the N possible clock types in perf::Clock_type
 NutilFlow module containing miscellaneous general-use facilities that don't fit into any other Flow module
 Nthis_threadShort-hand for standard this-thread namespace
 CBasic_blobA hand-optimized and API-tweaked replacement for vector<uint8_t>, i.e., buffer of bytes inside an allocated area of equal or larger size; also optionally supports limited garbage-collected memory pool functionality and SHM-friendly custom-allocator support
 CBasic_string_viewEssentially alias for a C++17-conforming string-view class template, which is a very lightweight std::string-like representation of a character sequence already in memory
 CBlob_with_log_contextBasic_blob that works in regular heap (and is itself placed in heap or stack) and memorizes a log::Logger, enabling easier logging albeit with a small perf trade-off
 CContainer_traitsProperties of various container types
 CContainer_traits< boost::unordered_set< T > >Traits of boost::unordered_set
 CContainer_traits< std::map< K, V > >Traits of std::map
 CContainer_traits< std::set< T > >Traits of std::set
 CContainer_traits< util::Linked_hash_map< K, V > >Traits of flow::util::Linked_hash_map
 CContainer_traits< util::Linked_hash_set< T, Hash, Pred > >Traits of flow::util::Linked_hash_set
 CLinked_hash_mapAn object of this class is a map that combines the lookup speed of a boost::unordered_map<> and ordering and iterator stability capabilities of an std::list<>
 CLinked_hash_setAn object of this class is a set that combines the lookup speed of an unordered_set<> and ordering and iterator stability capabilities of an std::list<>
 CNull_interfaceAn empty interface, consisting of nothing but a default virtual destructor, intended as a boiler-plate-reducing base for any other (presumably virtual-method-having) class that would otherwise require a default virtual destructor
 CRnd_gen_uniform_rangeSimple, non-thread-safe uniform-range random number generator
 CRnd_gen_uniform_range_baseBase class for Rnd_gen_uniform_range and Rnd_gen_uniform_range_mt for various aliases and similar, so template arguments need not be involved
 CRnd_gen_uniform_range_mtIdentical to Rnd_gen_uniform_range but safe for concurrent RNG given a single object
 CScoped_setterA simple RAII-pattern class template that, at construction, sets the specified location in memory to a specified value, memorizing the previous contents; and at destruction restores the value
 CShared_ptr_alias_holderConvenience class template that endows the given subclass T with nested aliases Ptr and Const_ptr aliased to shared_ptr<T> and shared_ptr<const T> respectively
 CString_ostreamSimilar to ostringstream but allows fast read-only access directly into the std::string being written; and some limited write access to that string
 CUnique_id_holderEach object of this class stores (at construction) and returns (on demand) a numeric ID unique from all other objects of the same class ever constructed, across all time from program start to end
 CFunction< Result(Args...)>Intended as the polymorphic function wrapper of choice for Flow, internally and externally; to be used instead of std::function or boost::function