- Notifications
You must be signed in to change notification settings - Fork0
Flow - Modern C++ toolkit for async loops, logs, config, benchmarking, and more [See also `ipc` repo]
License
Flow-IPC/flow
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
C++ power users, these days, are likely to use the standard library (a/k/a STL), Boost, and/or any number ofthird-party libraries. Nevertheless every large project or organization tends to need more reusable goodies,whether to add to STL/Boost/etc. or in some cases do something better, perhaps in a specialized way.
Flow is such a library (provided as both headers and an actual library). It's written in modern C++ (C++ 17as of this writing) and is meant to be generally usable as opposed to particularly specialized.(One exception to this is the included, but wholly optional, NetFlow protocol, contained inflow::net_flow
namespace. While still reusable in a general way, interest in this functionality is likely niche.)
We refrain from delving into any particulars as to what's in Flow, aside from the following brief list ofits top-level modules. The documentation (see Documentation below) covers all of its contents in great detail.So, that said, Flow includes (alphabetically ordered):
flow::async
: Single-threaded and multi-threaded event loops, augmenting boost.asio so as to actually createboost.asio-powered threads and thread pools, schedule timers more easily, and other niceties.flow::cfg
: Key-value configuration file parsing, augmenting a boost.program_options core with a large number ofquality-of life additions including support for high-speed dynamically updated configurationstruct
s.flow::error
: A few niceties around the ubiquitous boost.system (now adopted by STL also) error-reportingsystem. It also adds a simple convention for reporting errors, used across Flow, wherein each error-reportingAPI handles reporting results via error code return or exception (whichever the caller prefers at the call-site).flow::log
: A powerful and performant logging system. While it can actually output to console and files,if so configured, its loggers will also easily integrate with your own log system of choice.flow::perf
: Benchmarking with multiple clock types and checkpoint-based accounting (if desired).flow::util
: General goodies. Highlights:Blob
(efficient and controlledvector<uint8_t>
replacement withoptional sharing and mem-pools),Linked_hash_{map|set}
(hashed-lookup containers that maintain MRU-LRU iteratorordering as opposed to being unordered as inunordered_{map|set}
),String_ostream
(a sped-upostringstream
replacement leveraging boost.iostreams internally) plusostream_op_string()
function.
A comprehensive Referenceis available.
Theproject web site contains links to documentation for each individual release as well.
- As a tarball/zip: Theproject web site links to individual releases with notes, docs,download links.
- Via Git:
git clone git@github.com:Flow-IPC/flow.git
SeeINSTALL guide.
SeeCONTRIBUTING guide.
About
Flow - Modern C++ toolkit for async loops, logs, config, benchmarking, and more [See also `ipc` repo]