
Andrew Schweitzer wrote:
5) demuxer_service creates a platform-implementation demuxer_service (right?)
Rene Rivera wrote:
Not as far as I know. This is one of the points that some people have contention with. The real relation between demuxer_service and the implementation is closer to a PIMPL idiom, but without the pointer. In other words it's equivalent to:
demuxer_service *is-a* detail::win_iocp_demuxer_service
[snip] I think I'm confused. As far as I can tell, there's no inheritance relationship between demuxer_service and win_iocp_demuxer_service, but as you said, it's a PIMPL relation, or perhaps an RIMPL relation since it's a reference not a pointer. Is PIMPL considered is-a or has-a? I think the library design or naming might be a bit confused on this point (or quite possibly it's me). As far as I can tell two things are true: 1) the demuxer ends up with two actual services in its list after it is constructed: a) demuxer_service b) win_iocp_demuxer_service (or the selected platform-implemenation of demuxer_service) 2) the demuxer also has a PIMPL relation with demuxer_service, and demuxer_service has a PIMPL relation with win_iocp_demuxer_service Are you reading the code differently? I might have gotten lost.