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]