Asio Extensions
Additional functionality built on top of (Boost.)Asio
Introduction

AsioExt is a collection of components that build on Asio. It is compatible with standalone Asio, as well as the Boost version.

Feature overview

  • The Filesystem component provides platform-independent functionality that is not provided by Boost.Filesystem or standard iostreams.
  • The Networking component contains utilities that make using Asio objects more convenient.
  • The Core component provides low-level utilities that are used in other components (e.g. cancellation tokens)

Building

AsioExt requires a compiler that supports at least some C++11 features:

  • constexpr functions
  • Scoped enumerations (enum class)
  • C++11 <type_traits>
  • rvalue references (optional, if unavailable, objects will not be movable).

AsioExt's behavior can be customized by defining certain macros. See Build Options for a full list of possible build options.

Like Asio, AsioExt is header-only by default. However, it is also possible to build AsioExt as a separate compilation unit (by simply compiling a single additional .cpp file).

AsioExt ships with support for two different build systems (CMake, GN) and has been designed in such a way that its build scripts are easily re-usable.

Supported platforms

Currently, AsioExt is being tested on the following platforms:

  • Windows + Universal Windows
  • Linux
  • mac OS
  • FreeBSD

Dependencies

  • Asio 1.10.0+ (Only if not using Boost.Asio)
  • [optional] Boost 1.46.0+ (If Boost.Filesystem or Boost.Asio is used)