Update of /cvsroot/boost-sandbox/boost-sandbox/boost/thread_safe_signals
In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv1733/thread_safe_signals
Modified Files:
connection.hpp shared_connection_block.hpp
Log Message:
Added shared_connection_block::block() to allow user to
re-acquire block without creating a new shared_connection_block
object.
Index: shared_connection_block.hpp
===================================================================
RCS file: /cvsroot/boost-sandbox/boost-sandbox/boost/thread_safe_signals/shared_connection_block.hpp,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- shared_connection_block.hpp 2 Mar 2007 16:00:38 -0000 1.1
+++ shared_connection_block.hpp 5 Mar 2007 15:34:36 -0000 1.2
@@ -13,6 +13,7 @@
#include <boost/shared_ptr.hpp>
#include <boost/thread_safe_signals/connection.hpp>
+#include <boost/weak_ptr.hpp>
#ifdef BOOST_HAS_ABI_HEADERS
# include BOOST_ABI_PREFIX
@@ -26,13 +27,23 @@
{
public:
shared_connection_block(connection &conn):
- _blocker(conn.get_blocker())
- {}
+ _weakConnectionBody(conn._weakConnectionBody)
+ {
+ block();
+ }
+ void block()
+ {
+ if(_blocker) return;
+ boost::shared_ptr<detail::ConnectionBodyBase> connectionBody(_weakConnectionBody.lock());
+ if(connectionBody == 0) return;
+ _blocker = connectionBody->get_blocker();
+ }
void unblock()
{
_blocker.reset();
}
private:
+ boost::weak_ptr<detail::ConnectionBodyBase> _weakConnectionBody;
shared_ptr<void> _blocker;
};
}
Index: connection.hpp
===================================================================
RCS file: /cvsroot/boost-sandbox/boost-sandbox/boost/thread_safe_signals/connection.hpp,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -d -r1.24 -r1.25
--- connection.hpp 5 Mar 2007 15:10:55 -0000 1.24
+++ connection.hpp 5 Mar 2007 15:34:36 -0000 1.25
@@ -182,12 +182,6 @@
std::swap(_weakConnectionBody, other._weakConnectionBody);
}
private:
- shared_ptr<void> get_blocker()
- {
- boost::shared_ptr<detail::ConnectionBodyBase> connectionBody(_weakConnectionBody.lock());
- if(connectionBody == 0) return shared_ptr<void>();
- return connectionBody->get_blocker();
- }
boost::weak_ptr<detail::ConnectionBodyBase> _weakConnectionBody;
};
|