You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by gs...@apache.org on 2012/01/11 17:53:51 UTC
svn commit: r1230143 - in /qpid/branches/qpid-3603/qpid/cpp/src/qpid:
amqp_0_10/SessionHandler.cpp amqp_0_10/SessionHandler.h broker/Bridge.cpp
broker/Bridge.h broker/Link.cpp
Author: gsim
Date: Wed Jan 11 16:53:51 2012
New Revision: 1230143
URL: http://svn.apache.org/viewvc?rev=1230143&view=rev
Log:
QPID-3352: Fix test for failed session to avoid confusion with as yet uninitialised session
Modified:
qpid/branches/qpid-3603/qpid/cpp/src/qpid/amqp_0_10/SessionHandler.cpp
qpid/branches/qpid-3603/qpid/cpp/src/qpid/amqp_0_10/SessionHandler.h
qpid/branches/qpid-3603/qpid/cpp/src/qpid/broker/Bridge.cpp
qpid/branches/qpid-3603/qpid/cpp/src/qpid/broker/Bridge.h
qpid/branches/qpid-3603/qpid/cpp/src/qpid/broker/Link.cpp
Modified: qpid/branches/qpid-3603/qpid/cpp/src/qpid/amqp_0_10/SessionHandler.cpp
URL: http://svn.apache.org/viewvc/qpid/branches/qpid-3603/qpid/cpp/src/qpid/amqp_0_10/SessionHandler.cpp?rev=1230143&r1=1230142&r2=1230143&view=diff
==============================================================================
--- qpid/branches/qpid-3603/qpid/cpp/src/qpid/amqp_0_10/SessionHandler.cpp (original)
+++ qpid/branches/qpid-3603/qpid/cpp/src/qpid/amqp_0_10/SessionHandler.cpp Wed Jan 11 16:53:51 2012
@@ -42,7 +42,7 @@ void SessionHandler::checkAttached() {
SessionHandler::SessionHandler(FrameHandler* out, ChannelId ch)
: channel(ch, out), peer(channel),
awaitingDetached(false),
- sendReady(), receiveReady() {}
+ sendReady(), receiveReady(), hasFailed(false) {}
SessionHandler::~SessionHandler() {}
@@ -192,6 +192,7 @@ void SessionHandler::detached(const std:
awaitingDetached = false;
if (code != session::DETACH_CODE_NORMAL) {
sendReady = receiveReady = false;
+ hasFailed = true;
channelException(convert(code), "session.detached from peer.");
} else {
handleDetach();
@@ -330,6 +331,9 @@ void SessionHandler::sendFlush() {
bool SessionHandler::ready() const {
return sendReady && receiveReady;
}
+bool SessionHandler::failed() const {
+ return hasFailed;
+}
}} // namespace qpid::broker
Modified: qpid/branches/qpid-3603/qpid/cpp/src/qpid/amqp_0_10/SessionHandler.h
URL: http://svn.apache.org/viewvc/qpid/branches/qpid-3603/qpid/cpp/src/qpid/amqp_0_10/SessionHandler.h?rev=1230143&r1=1230142&r2=1230143&view=diff
==============================================================================
--- qpid/branches/qpid-3603/qpid/cpp/src/qpid/amqp_0_10/SessionHandler.h (original)
+++ qpid/branches/qpid-3603/qpid/cpp/src/qpid/amqp_0_10/SessionHandler.h Wed Jan 11 16:53:51 2012
@@ -67,6 +67,8 @@ class QPID_COMMON_CLASS_EXTERN SessionHa
/** True if the handler is ready to send and receive */
QPID_COMMON_EXTERN bool ready() const;
+ /** True if the session has failed with an execution exception */
+ QPID_COMMON_EXTERN bool failed() const;
// Protocol methods
QPID_COMMON_EXTERN void attach(const std::string& name, bool force);
@@ -111,7 +113,7 @@ class QPID_COMMON_CLASS_EXTERN SessionHa
framing::AMQP_AllProxy::Session peer;
std::string name;
bool awaitingDetached;
- bool sendReady, receiveReady;
+ bool sendReady, receiveReady, hasFailed;
};
}} // namespace qpid::amqp_0_10
Modified: qpid/branches/qpid-3603/qpid/cpp/src/qpid/broker/Bridge.cpp
URL: http://svn.apache.org/viewvc/qpid/branches/qpid-3603/qpid/cpp/src/qpid/broker/Bridge.cpp?rev=1230143&r1=1230142&r2=1230143&view=diff
==============================================================================
--- qpid/branches/qpid-3603/qpid/cpp/src/qpid/broker/Bridge.cpp (original)
+++ qpid/branches/qpid-3603/qpid/cpp/src/qpid/broker/Bridge.cpp Wed Jan 11 16:53:51 2012
@@ -178,10 +178,9 @@ void Bridge::destroy()
listener(this);
}
-bool Bridge::isSessionReady() const
+bool Bridge::hasSessionFailed() const
{
- SessionHandler& sessionHandler = conn->getChannel(id);
- return sessionHandler.ready();
+ return conn->getChannel(id).failed();
}
void Bridge::setPersistenceId(uint64_t pId) const
Modified: qpid/branches/qpid-3603/qpid/cpp/src/qpid/broker/Bridge.h
URL: http://svn.apache.org/viewvc/qpid/branches/qpid-3603/qpid/cpp/src/qpid/broker/Bridge.h?rev=1230143&r1=1230142&r2=1230143&view=diff
==============================================================================
--- qpid/branches/qpid-3603/qpid/cpp/src/qpid/broker/Bridge.h (original)
+++ qpid/branches/qpid-3603/qpid/cpp/src/qpid/broker/Bridge.h Wed Jan 11 16:53:51 2012
@@ -63,7 +63,7 @@ public:
void destroy();
bool isDurable() { return args.i_durable; }
- bool isSessionReady() const;
+ bool hasSessionFailed() const;
management::ManagementObject* GetManagementObject() const;
management::Manageable::status_t ManagementMethod(uint32_t methodId,
Modified: qpid/branches/qpid-3603/qpid/cpp/src/qpid/broker/Link.cpp
URL: http://svn.apache.org/viewvc/qpid/branches/qpid-3603/qpid/cpp/src/qpid/broker/Link.cpp?rev=1230143&r1=1230142&r2=1230143&view=diff
==============================================================================
--- qpid/branches/qpid-3603/qpid/cpp/src/qpid/broker/Link.cpp (original)
+++ qpid/branches/qpid-3603/qpid/cpp/src/qpid/broker/Link.cpp Wed Jan 11 16:53:51 2012
@@ -253,7 +253,7 @@ void Link::ioThreadProcessing()
// check for bridge session errors and recover
if (!active.empty()) {
Bridges::iterator removed = std::remove_if(
- active.begin(), active.end(), !boost::bind(&Bridge::isSessionReady, _1));
+ active.begin(), active.end(), boost::bind(&Bridge::hasSessionFailed, _1));
for (Bridges::iterator i = removed; i != active.end(); ++i) {
Bridge::shared_ptr bridge = *i;
bridge->closed();
---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project: http://qpid.apache.org
Use/Interact: mailto:commits-subscribe@qpid.apache.org