Bug 447540 - c++ client API clean-up
c++ client API clean-up
Product: Red Hat Enterprise MRG
Classification: Red Hat
Component: qpid-cpp (Show other bugs)
All Linux
medium Severity low
: Next Version
: ---
Assigned To: Alan Conway
Kim van der Riet
Depends On:
  Show dependency treegraph
Reported: 2008-05-20 09:42 EDT by Alan Conway
Modified: 2011-08-12 12:20 EDT (History)
0 users

See Also:
Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Last Closed: 2009-10-27 14:24:05 EDT
Type: ---
Regression: ---
Mount Type: ---
Documentation: ---
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---

Attachments (Terms of Use)

  None (edit)
Description Alan Conway 2008-05-20 09:42:39 EDT
Description of problem:

Client header files are a mix of implementation details and user API.
Client header files expose some implementation details.


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.
Comment 1 Alan Conway 2008-08-27 10:35:26 EDT
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
Comment 2 Alan Conway 2009-10-27 14:24:05 EDT

Note You need to log in before you can comment on or make changes to this bug.