Description of problem: Client header files are a mix of implementation details and user API. Client header files expose some implementation details. TODO: Separate client API headers from client implementation files, move API headers from cpp/src to cpp/include Refactor API headers to move implementation details out of include/ and into src/ Use PIMPL idiom. Note existing Connection/Session classes are almost PIMPL but still have some private implementation details exposed. NOTE: Only API headers in include/ should be installed by qpidc-devel. Ultimately qpid-devel also needs this treatment but it is lower priority since we don't yet plan to support customers writing their own broker plug-ins.
We also need to - added make check tests to ensure that public .h files do not #include private ones (gen a dummy file that includes all the public .h files & compile with only -I <public-include>) - do some refactoring to reduce the amount of impl we expose in those files - use the full PIMPL idiom (expose only a void* or T* for a forward-declared type T) - Have no virtual fns. in public classes, except for classes that are intended to be inherited from by the user. - fixu up gcc options so that only public methods in public .h files are visible in libqpidclient.so
Completed.