- 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]
Topics
Resources
License
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Uh oh!
There was an error while loading.Please reload this page.
Contributors3
Uh oh!
There was an error while loading.Please reload this page.