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 2014/01/21 19:27:32 UTC
svn commit: r1560125 - in /qpid/trunk/qpid/cpp/src/qpid/messaging/amqp:
ConnectionContext.cpp ConnectionContext.h SessionHandle.cpp
Author: gsim
Date: Tue Jan 21 18:27:32 2014
New Revision: 1560125
URL: http://svn.apache.org/r1560125
Log:
QPID-5497: implement Session::sync()
Modified:
qpid/trunk/qpid/cpp/src/qpid/messaging/amqp/ConnectionContext.cpp
qpid/trunk/qpid/cpp/src/qpid/messaging/amqp/ConnectionContext.h
qpid/trunk/qpid/cpp/src/qpid/messaging/amqp/SessionHandle.cpp
Modified: qpid/trunk/qpid/cpp/src/qpid/messaging/amqp/ConnectionContext.cpp
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/messaging/amqp/ConnectionContext.cpp?rev=1560125&r1=1560124&r2=1560125&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/messaging/amqp/ConnectionContext.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/messaging/amqp/ConnectionContext.cpp Tue Jan 21 18:27:32 2014
@@ -125,6 +125,17 @@ bool ConnectionContext::isOpen() const
return state == CONNECTED && pn_connection_state(connection) & (PN_LOCAL_ACTIVE | PN_REMOTE_ACTIVE);
}
+void ConnectionContext::sync(boost::shared_ptr<SessionContext> ssn)
+{
+ qpid::sys::ScopedLock<qpid::sys::Monitor> l(lock);
+ //wait for outstanding sends to settle
+ while (!ssn->settled()) {
+ QPID_LOG(debug, "Waiting for sends to settle on sync()");
+ wait(ssn);//wait until message has been confirmed
+ }
+ checkClosed(ssn);
+}
+
void ConnectionContext::endSession(boost::shared_ptr<SessionContext> ssn)
{
qpid::sys::ScopedLock<qpid::sys::Monitor> l(lock);
Modified: qpid/trunk/qpid/cpp/src/qpid/messaging/amqp/ConnectionContext.h
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/messaging/amqp/ConnectionContext.h?rev=1560125&r1=1560124&r2=1560125&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/messaging/amqp/ConnectionContext.h (original)
+++ qpid/trunk/qpid/cpp/src/qpid/messaging/amqp/ConnectionContext.h Tue Jan 21 18:27:32 2014
@@ -84,6 +84,7 @@ class ConnectionContext : public qpid::s
bool get(boost::shared_ptr<SessionContext> ssn, boost::shared_ptr<ReceiverContext> lnk, qpid::messaging::Message& message, qpid::messaging::Duration timeout);
void acknowledge(boost::shared_ptr<SessionContext> ssn, qpid::messaging::Message* message, bool cumulative);
void nack(boost::shared_ptr<SessionContext> ssn, qpid::messaging::Message& message, bool reject);
+ void sync(boost::shared_ptr<SessionContext> ssn);
void setOption(const std::string& name, const qpid::types::Variant& value);
std::string getAuthenticatedUsername();
Modified: qpid/trunk/qpid/cpp/src/qpid/messaging/amqp/SessionHandle.cpp
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/messaging/amqp/SessionHandle.cpp?rev=1560125&r1=1560124&r2=1560125&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/messaging/amqp/SessionHandle.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/messaging/amqp/SessionHandle.cpp Tue Jan 21 18:27:32 2014
@@ -75,9 +75,11 @@ void SessionHandle::close()
connection->endSession(session);
}
-void SessionHandle::sync(bool /*block*/)
+void SessionHandle::sync(bool block)
{
-
+ if (block) {
+ connection->sync(session);
+ }
}
qpid::messaging::Sender SessionHandle::createSender(const qpid::messaging::Address& address)
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org