VIO still has a C+ architecture, oversized structs with function pointers.
There is no reason for that, abstract class(pure virtual) would do better, and allow easiler changes and more functionality.
Abstract class could have read(),write(),has_data(), shutdown(), make_blocking() and read/write async to support (Windows or other systems AIO) .
Vio classes could be stacked/layered, to support e.g buffering and in some cases SSL (I'm thinking of native Schannel ssl for example which would need undelying read and write functions). Currently neither SSL nor buffering work for named pipe.
Note, that there is a tiny client included into the server, that would be using C++ vio as well.
It is currently C, but there is nothing that prevents it to be compiled in C++ (export functions must be properly declared extern "C" though).