[
https://issues.apache.org/jira/browse/QPID-342?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Alan Conway updated QPID-342:
-----------------------------
Description:
(See API proposal in QPID-664)
Currently the C++ client API is like this:
Connection myConnection;
myConnection.open(...);
Channel myChannel;
myConnection.openChannel(myChannel);
myChannel.dostuff...
I would like to change it to be like this:
Connection::shared_ptr myConnection = Connection::open(...);
Channel::shared_ptr myChannel = myConnection->openChannel(...channel args);
myChannel->dostuff...
There are two problems with the current approach:
- constructor creates "lame" objects, need an open() call to make them
useful.
- Letting user call constructor directly means we can't change the
implementation class, whereas the second approach allows us to return
anything inheriting from the user-visible class.
was:
Currently the C++ client API is like this:
Connection myConnection;
myConnection.open(...);
Channel myChannel;
myConnection.openChannel(myChannel);
myChannel.dostuff...
I would like to change it to be like this:
Connection::shared_ptr myConnection = Connection::open(...);
Channel::shared_ptr myChannel = myConnection->openChannel(...channel args);
myChannel->dostuff...
There are two problems with the current approach:
- constructor creates "lame" objects, need an open() call to make them
useful.
- Letting user call constructor directly means we can't change the
implementation class, whereas the second approach allows us to return
anything inheriting from the user-visible class.
> Isolate C++ client API
> ----------------------
>
> Key: QPID-342
> URL: https://issues.apache.org/jira/browse/QPID-342
> Project: Qpid
> Issue Type: Improvement
> Components: C++ Client
> Reporter: Alan Conway
> Fix For: M3
>
>
> (See API proposal in QPID-664)
> Currently the C++ client API is like this:
> Connection myConnection;
> myConnection.open(...);
> Channel myChannel;
> myConnection.openChannel(myChannel);
> myChannel.dostuff...
> I would like to change it to be like this:
> Connection::shared_ptr myConnection = Connection::open(...);
> Channel::shared_ptr myChannel = myConnection->openChannel(...channel args);
> myChannel->dostuff...
> There are two problems with the current approach:
> - constructor creates "lame" objects, need an open() call to make them
> useful.
> - Letting user call constructor directly means we can't change the
> implementation class, whereas the second approach allows us to return
> anything inheriting from the user-visible class.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.