
Christopher Kohlhoff <chris@kohlhoff.com> writes:
[snip]
I don't think that the need to pass a demuxer to the socket constructor is conceptually difficult to explain. It's there for the asynchronous operations, if and when you need them.
I also do not agree that it is onerous to have to pass the demuxer to the constructor, or to pass it wherever it's needed in the program. You can make it a global, declare a new one for each use, or even use one associated with an existing object, as in:
stream_socket s(my_acceptor.demuxer());
Therefore I stand by my design choices as the best balance between usability, functionality and flexibility.
It seems that a possible solution is to provide a `dummy' demuxer that simply makes asynchronous operations fail. This `dummy' demuxer could then be the default parameter to the socket constructors, thus eliminating the need to specify a demuxer for synchronous-only use. It seems that this would indeed clean up the interface for synchronous-only use.
[snip]
-- Jeremy Maitin-Shepard