On Thu, Mar 14, 2019 at 4:49 PM Vinnie Falco via Boost-users < boost-users@lists.boost.org> wrote:
Fellow C++, Boost, and WG21 Enthusiasts, lend me your ear!
I write to inform you about exciting developments in C++ networking.
There was a recent paper in Kona, P1269R0 ("Three Years with the Networking TS") about difficulty of implementing timeouts. To address this, Beast now has a stream class which implements configurable timeouts for you, and callers no longer have to fiddle with timers manually anymore. Everything "Just Works." It achieves the P1269R0 author's goal of having timeouts "built-in to asynchronous operations", but in a way that fits in with the design of the TS:
< https://www.boost.org/doc/libs/master/libs/beast/doc/html/beast/using_io/tim...
I feel that this `beast::basic_stream` serves as an existence proof that the current design of Networking TS is sound - the TS offers a flexible toolbox which lets you build your own framework the way that you want it, without making odd choices for you. We are still discovering ways of leveraging it to maximum use. The beast::websocket::stream also has built-in timeouts, but they are enhanced to support "idle pings" (keeping client connections alive) and everything is fully configurable:
This is excellent news. Timeouts are ASIO's biggest downfall. I'll definitely check it out. If it's low level, and performant enough, then it paves the way for ASIO-ed connectors for things like Redis and ZeroMQ.