Author: gsim
Date: Tue Nov 17 17:35:28 2009
New Revision: 881395

URL: http://svn.apache.org/viewvc?rev=881395&view=rev
Log:
QPID-664: Add accessors for connection from session, and for session from 
sender/receiver.

Modified:
    qpid/trunk/qpid/cpp/include/qpid/messaging/Receiver.h
    qpid/trunk/qpid/cpp/include/qpid/messaging/Sender.h
    qpid/trunk/qpid/cpp/include/qpid/messaging/Session.h
    qpid/trunk/qpid/cpp/src/qpid/client/amqp0_10/ReceiverImpl.cpp
    qpid/trunk/qpid/cpp/src/qpid/client/amqp0_10/ReceiverImpl.h
    qpid/trunk/qpid/cpp/src/qpid/client/amqp0_10/SenderImpl.cpp
    qpid/trunk/qpid/cpp/src/qpid/client/amqp0_10/SenderImpl.h
    qpid/trunk/qpid/cpp/src/qpid/client/amqp0_10/SessionImpl.cpp
    qpid/trunk/qpid/cpp/src/qpid/client/amqp0_10/SessionImpl.h
    qpid/trunk/qpid/cpp/src/qpid/messaging/Receiver.cpp
    qpid/trunk/qpid/cpp/src/qpid/messaging/ReceiverImpl.h
    qpid/trunk/qpid/cpp/src/qpid/messaging/Sender.cpp
    qpid/trunk/qpid/cpp/src/qpid/messaging/SenderImpl.h
    qpid/trunk/qpid/cpp/src/qpid/messaging/Session.cpp
    qpid/trunk/qpid/cpp/src/qpid/messaging/SessionImpl.h
    qpid/trunk/qpid/cpp/src/tests/MessagingSessionTests.cpp

Modified: qpid/trunk/qpid/cpp/include/qpid/messaging/Receiver.h
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/include/qpid/messaging/Receiver.h?rev=881395&r1=881394&r2=881395&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/include/qpid/messaging/Receiver.h (original)
+++ qpid/trunk/qpid/cpp/include/qpid/messaging/Receiver.h Tue Nov 17 17:35:28 
2009
@@ -37,6 +37,7 @@
 
 class Message;
 class ReceiverImpl;
+class Session;
 
 /**
  * Interface through which messages are received.
@@ -116,6 +117,11 @@
      */
     QPID_CLIENT_EXTERN const std::string& getName() const;
 
+    /**
+     * Returns a handle to the session associated with this receiver.
+     */
+    QPID_CLIENT_EXTERN Session getSession() const;
+
   private:
   friend class qpid::client::PrivateImplRef<Receiver>;
 };

Modified: qpid/trunk/qpid/cpp/include/qpid/messaging/Sender.h
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/include/qpid/messaging/Sender.h?rev=881395&r1=881394&r2=881395&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/include/qpid/messaging/Sender.h (original)
+++ qpid/trunk/qpid/cpp/include/qpid/messaging/Sender.h Tue Nov 17 17:35:28 2009
@@ -37,7 +37,7 @@
 
 class Message;
 class SenderImpl;
-
+class Session;
 /**
  * Interface through which messages are sent.
  */
@@ -73,6 +73,11 @@
      * Returns the name of this sender.
      */
     QPID_CLIENT_EXTERN const std::string& getName() const;
+
+    /**
+     * Returns a handle to the session associated with this sender.
+     */
+    QPID_CLIENT_EXTERN Session getSession() const;
   private:
   friend class qpid::client::PrivateImplRef<Sender>;
 };

Modified: qpid/trunk/qpid/cpp/include/qpid/messaging/Session.h
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/include/qpid/messaging/Session.h?rev=881395&r1=881394&r2=881395&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/include/qpid/messaging/Session.h (original)
+++ qpid/trunk/qpid/cpp/include/qpid/messaging/Session.h Tue Nov 17 17:35:28 
2009
@@ -37,6 +37,7 @@
 namespace messaging {
 
 class Address;
+class Connection;
 class Message;
 class MessageListener;
 class Sender;
@@ -133,6 +134,12 @@
      * if there is none for that name.
      */
     QPID_CLIENT_EXTERN Receiver getReceiver(const std::string& name) const;
+    /**
+     * Returns a handle to the connection this session is associated
+     * with.
+     */
+    QPID_CLIENT_EXTERN Connection getConnection() const;
+
   private:
   friend class qpid::client::PrivateImplRef<Session>;
 };

Modified: qpid/trunk/qpid/cpp/src/qpid/client/amqp0_10/ReceiverImpl.cpp
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/client/amqp0_10/ReceiverImpl.cpp?rev=881395&r1=881394&r2=881395&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/client/amqp0_10/ReceiverImpl.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/client/amqp0_10/ReceiverImpl.cpp Tue Nov 17 
17:35:28 2009
@@ -23,6 +23,7 @@
 #include "MessageSource.h"
 #include "SessionImpl.h"
 #include "qpid/messaging/Receiver.h"
+#include "qpid/messaging/Session.h"
 
 namespace qpid {
 namespace client {
@@ -185,6 +186,9 @@
         }
     }
 }
-
+qpid::messaging::Session ReceiverImpl::getSession() const
+{
+    return qpid::messaging::Session(&parent);
+}
 
 }}} // namespace qpid::client::amqp0_10

Modified: qpid/trunk/qpid/cpp/src/qpid/client/amqp0_10/ReceiverImpl.h
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/client/amqp0_10/ReceiverImpl.h?rev=881395&r1=881394&r2=881395&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/client/amqp0_10/ReceiverImpl.h (original)
+++ qpid/trunk/qpid/cpp/src/qpid/client/amqp0_10/ReceiverImpl.h Tue Nov 17 
17:35:28 2009
@@ -63,6 +63,7 @@
     uint32_t available();
     uint32_t pendingAck();
     void received(qpid::messaging::Message& message);
+    qpid::messaging::Session getSession() const;
   private:
     SessionImpl& parent;
     const std::string destination;

Modified: qpid/trunk/qpid/cpp/src/qpid/client/amqp0_10/SenderImpl.cpp
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/client/amqp0_10/SenderImpl.cpp?rev=881395&r1=881394&r2=881395&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/client/amqp0_10/SenderImpl.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/client/amqp0_10/SenderImpl.cpp Tue Nov 17 
17:35:28 2009
@@ -23,6 +23,7 @@
 #include "SessionImpl.h"
 #include "AddressResolution.h"
 #include "OutgoingMessage.h"
+#include "qpid/messaging/Session.h"
 
 namespace qpid {
 namespace client {
@@ -134,4 +135,9 @@
     return name;
 }
 
+qpid::messaging::Session SenderImpl::getSession() const
+{
+    return qpid::messaging::Session(&parent);
+}
+
 }}} // namespace qpid::client::amqp0_10

Modified: qpid/trunk/qpid/cpp/src/qpid/client/amqp0_10/SenderImpl.h
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/client/amqp0_10/SenderImpl.h?rev=881395&r1=881394&r2=881395&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/client/amqp0_10/SenderImpl.h (original)
+++ qpid/trunk/qpid/cpp/src/qpid/client/amqp0_10/SenderImpl.h Tue Nov 17 
17:35:28 2009
@@ -55,6 +55,7 @@
     uint32_t pending();
     void init(qpid::client::AsyncSession, AddressResolution&);
     const std::string& getName() const;
+    qpid::messaging::Session getSession() const;
 
   private:
     SessionImpl& parent;

Modified: qpid/trunk/qpid/cpp/src/qpid/client/amqp0_10/SessionImpl.cpp
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/client/amqp0_10/SessionImpl.cpp?rev=881395&r1=881394&r2=881395&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/client/amqp0_10/SessionImpl.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/client/amqp0_10/SessionImpl.cpp Tue Nov 17 
17:35:28 2009
@@ -28,6 +28,7 @@
 #include "qpid/Exception.h"
 #include "qpid/log/Statement.h"
 #include "qpid/messaging/Address.h"
+#include "qpid/messaging/Connection.h"
 #include "qpid/messaging/Message.h"
 #include "qpid/messaging/MessageImpl.h"
 #include "qpid/messaging/Sender.h"
@@ -424,4 +425,9 @@
     connection.reconnect();    
 }
 
+qpid::messaging::Connection SessionImpl::getConnection() const
+{
+    return qpid::messaging::Connection(&connection);
+}
+
 }}} // namespace qpid::client::amqp0_10

Modified: qpid/trunk/qpid/cpp/src/qpid/client/amqp0_10/SessionImpl.h
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/client/amqp0_10/SessionImpl.h?rev=881395&r1=881394&r2=881395&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/client/amqp0_10/SessionImpl.h (original)
+++ qpid/trunk/qpid/cpp/src/qpid/client/amqp0_10/SessionImpl.h Tue Nov 17 
17:35:28 2009
@@ -32,8 +32,8 @@
 namespace qpid {
 
 namespace messaging {
-struct Address;
-struct Filter;
+class Address;
+class Connection;
 class Message;
 class Receiver;
 class Sender;
@@ -71,6 +71,8 @@
     bool nextReceiver(qpid::messaging::Receiver& receiver, qpid::sys::Duration 
timeout);
     qpid::messaging::Receiver nextReceiver(qpid::sys::Duration timeout);
 
+    qpid::messaging::Connection getConnection() const;
+
     bool get(ReceiverImpl& receiver, qpid::messaging::Message& message, 
qpid::sys::Duration timeout);    
 
     void receiverCancelled(const std::string& name);

Modified: qpid/trunk/qpid/cpp/src/qpid/messaging/Receiver.cpp
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/messaging/Receiver.cpp?rev=881395&r1=881394&r2=881395&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/messaging/Receiver.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/messaging/Receiver.cpp Tue Nov 17 17:35:28 2009
@@ -21,6 +21,7 @@
 #include "qpid/messaging/Receiver.h"
 #include "qpid/messaging/Message.h"
 #include "qpid/messaging/ReceiverImpl.h"
+#include "qpid/messaging/Session.h"
 #include "qpid/client/PrivateImplRef.h"
 
 namespace qpid {
@@ -48,4 +49,5 @@
 uint32_t Receiver::pendingAck() { return impl->pendingAck(); }
 void Receiver::cancel() { impl->cancel(); }
 const std::string& Receiver::getName() const { return impl->getName(); }
+Session Receiver::getSession() const { return impl->getSession(); }
 }} // namespace qpid::messaging

Modified: qpid/trunk/qpid/cpp/src/qpid/messaging/ReceiverImpl.h
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/messaging/ReceiverImpl.h?rev=881395&r1=881394&r2=881395&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/messaging/ReceiverImpl.h (original)
+++ qpid/trunk/qpid/cpp/src/qpid/messaging/ReceiverImpl.h Tue Nov 17 17:35:28 
2009
@@ -32,6 +32,7 @@
 
 class Message;
 class MessageListener;
+class Session;
 
 class ReceiverImpl : public virtual qpid::RefCounted
 {
@@ -47,6 +48,7 @@
     virtual uint32_t pendingAck() = 0;
     virtual void cancel() = 0;
     virtual const std::string& getName() const = 0;
+    virtual Session getSession() const = 0;
 };
 }} // namespace qpid::messaging
 

Modified: qpid/trunk/qpid/cpp/src/qpid/messaging/Sender.cpp
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/messaging/Sender.cpp?rev=881395&r1=881394&r2=881395&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/messaging/Sender.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/messaging/Sender.cpp Tue Nov 17 17:35:28 2009
@@ -21,6 +21,7 @@
 #include "qpid/messaging/Sender.h"
 #include "qpid/messaging/Message.h"
 #include "qpid/messaging/SenderImpl.h"
+#include "qpid/messaging/Session.h"
 #include "qpid/client/PrivateImplRef.h"
 
 namespace qpid {
@@ -44,5 +45,6 @@
 uint32_t Sender::getCapacity() { return impl->getCapacity(); }
 uint32_t Sender::pending() { return impl->pending(); }
 const std::string& Sender::getName() const { return impl->getName(); }
+Session Sender::getSession() const { return impl->getSession(); }
 
 }} // namespace qpid::messaging

Modified: qpid/trunk/qpid/cpp/src/qpid/messaging/SenderImpl.h
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/messaging/SenderImpl.h?rev=881395&r1=881394&r2=881395&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/messaging/SenderImpl.h (original)
+++ qpid/trunk/qpid/cpp/src/qpid/messaging/SenderImpl.h Tue Nov 17 17:35:28 2009
@@ -30,6 +30,7 @@
 namespace messaging {
 
 class Message;
+class Session;
 
 class SenderImpl : public virtual qpid::RefCounted
 {
@@ -41,6 +42,7 @@
     virtual uint32_t getCapacity() = 0;
     virtual uint32_t pending() = 0;
     virtual const std::string& getName() const = 0;
+    virtual Session getSession() const = 0;
   private:
 };
 }} // namespace qpid::messaging

Modified: qpid/trunk/qpid/cpp/src/qpid/messaging/Session.cpp
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/messaging/Session.cpp?rev=881395&r1=881394&r2=881395&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/messaging/Session.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/messaging/Session.cpp Tue Nov 17 17:35:28 2009
@@ -20,6 +20,7 @@
  */
 #include "qpid/messaging/Session.h"
 #include "qpid/messaging/Address.h"
+#include "qpid/messaging/Connection.h"
 #include "qpid/messaging/Message.h"
 #include "qpid/messaging/Sender.h"
 #include "qpid/messaging/Receiver.h"
@@ -98,6 +99,11 @@
     return impl->getReceiver(name); 
 }
 
+Connection Session::getConnection() const
+{ 
+    return impl->getConnection(); 
+}
+
 KeyError::KeyError(const std::string& msg) : Exception(msg) {}
 
 }} // namespace qpid::messaging

Modified: qpid/trunk/qpid/cpp/src/qpid/messaging/SessionImpl.h
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/messaging/SessionImpl.h?rev=881395&r1=881394&r2=881395&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/messaging/SessionImpl.h (original)
+++ qpid/trunk/qpid/cpp/src/qpid/messaging/SessionImpl.h Tue Nov 17 17:35:28 
2009
@@ -31,8 +31,8 @@
 
 namespace messaging {
 
-struct Address;
-struct Filter;
+class Address;
+class Connection;
 class Message;
 class Sender;
 class Receiver;
@@ -56,6 +56,7 @@
     virtual uint32_t pendingAck() = 0;
     virtual Sender getSender(const std::string& name) const = 0;
     virtual Receiver getReceiver(const std::string& name) const = 0;
+    virtual Connection getConnection() const = 0;
   private:
 };
 }} // namespace qpid::messaging

Modified: qpid/trunk/qpid/cpp/src/tests/MessagingSessionTests.cpp
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/tests/MessagingSessionTests.cpp?rev=881395&r1=881394&r2=881395&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/tests/MessagingSessionTests.cpp (original)
+++ qpid/trunk/qpid/cpp/src/tests/MessagingSessionTests.cpp Tue Nov 17 17:35:28 
2009
@@ -718,7 +718,7 @@
     BOOST_CHECK_THROW(fix.session.getReceiver("UnknownReceiver"), 
qpid::messaging::KeyError);
 }
 
-QPID_AUTO_TEST_CASE(testGetSession)
+QPID_AUTO_TEST_CASE(testGetSessionFromConnection)
 {
     QueueFixture fix;
     fix.connection.newSession("my-session");
@@ -731,6 +731,19 @@
     BOOST_CHECK_THROW(fix.connection.getSession("UnknownSession"), 
qpid::messaging::KeyError);
 }
 
+QPID_AUTO_TEST_CASE(testGetConnectionFromSession)
+{
+    QueueFixture fix;
+    Message out(Uuid(true).str());
+    Sender sender = fix.session.createSender(fix.queue);
+    sender.send(out);
+    Message in;
+    sender.getSession().getConnection().newSession("incoming");
+    
BOOST_CHECK(fix.connection.getSession("incoming").createReceiver(fix.queue).fetch(in));
+    BOOST_CHECK_EQUAL(out.getContent(), in.getContent());
+}
+
+
 QPID_AUTO_TEST_SUITE_END()
 
 }} // namespace qpid::tests



---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:[email protected]

Reply via email to