|
Boost-Commit : |
Subject: [Boost-commit] svn:boost r51243 - in sandbox/synchro/boost/synchro: . lockers process thread
From: vicente.botet_at_[hidden]
Date: 2009-02-14 03:53:14
Author: viboes
Date: 2009-02-14 03:53:13 EST (Sat, 14 Feb 2009)
New Revision: 51243
URL: http://svn.boost.org/trac/boost/changeset/51243
Log:
Boost.Synchro V0.0.0
Adding timeout exceptions
Added:
sandbox/synchro/boost/synchro/condition_lockable.hpp (contents, props changed)
sandbox/synchro/boost/synchro/timeout_exception.hpp (contents, props changed)
Text files modified:
sandbox/synchro/boost/synchro/lockable_adapter.hpp | 21 +++++++++--
sandbox/synchro/boost/synchro/lockers/strict_locker.hpp | 2
sandbox/synchro/boost/synchro/process/mutex.hpp | 7 +++
sandbox/synchro/boost/synchro/process/named_mutex.hpp | 8 +++
sandbox/synchro/boost/synchro/process/named_recursive_mutex.hpp | 7 +++
sandbox/synchro/boost/synchro/process/named_upgradable_mutex.hpp | 15 +++++++-
sandbox/synchro/boost/synchro/process/recursive_mutex.hpp | 7 +++
sandbox/synchro/boost/synchro/process/upgradable_mutex.hpp | 71 +++++++++++++++++++++++----------------
sandbox/synchro/boost/synchro/thread/mutex.hpp | 17 ++++++---
sandbox/synchro/boost/synchro/thread/recursive_mutex.hpp | 18 +++++-----
sandbox/synchro/boost/synchro/thread/shared_mutex.hpp | 9 +++++
11 files changed, 127 insertions(+), 55 deletions(-)
Added: sandbox/synchro/boost/synchro/condition_lockable.hpp
==============================================================================
--- (empty file)
+++ sandbox/synchro/boost/synchro/condition_lockable.hpp 2009-02-14 03:53:13 EST (Sat, 14 Feb 2009)
@@ -0,0 +1,97 @@
+//////////////////////////////////////////////////////////////////////////////
+//
+// (C) Copyright Vicente J. Botet Escriba 2008-2009. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/synchro for documentation.
+//
+//////////////////////////////////////////////////////////////////////////////
+
+#ifndef BOOST_SYNCHRO_CONDITION_LOCKABLE__HPP
+#define BOOST_SYNCHRO_CONDITION_LOCKABLE__HPP
+
+#include <boost/synchro/lockable_concepts.hpp>
+#include <boost/thread/condition.hpp>
+#include <boost/interprocess/interprocess_condition.hpp>
+#include <boost/synchro/thread/mutex.hpp>
+#include <boost/synchro/condition_backdoor.hpp>
+#include <boost/synchro/condition_safe.hpp>
+#include <boost/synchro/timeout_exception.hpp>
+
+namespace boost { namespace synchro {
+
+//[condition_lockable
+template <
+ typename Lockable=thread_mutex,
+ class Condition=condition_safe<typename best_condition<Lockable>::type >
+>
+class condition_lockable;
+
+template <typename Lockable, class Condition >
+class condition_lockable : public Lockable {
+ BOOST_CONCEPT_ASSERT((LockableConcept<Lockable>));
+public:
+ typedef Lockable lockable_type;
+ typedef Condition condition;
+
+ condition_lockable() {}
+ ~condition_lockable() {}
+
+ template<typename Predicate>
+ void lock_when(condition &cond, Predicate pred){
+ typename condition::backdoor(cond).wait_when(*this, pred);
+ }
+ template<typename Predicate>
+ void lock_when_until(condition &cond, Predicate pred,
+ boost::system_time const& abs_time){
+ typename condition::backdoor(cond).wait_when_until(*this, pred, abs_time);
+ }
+ template<typename Predicate, typename duration_type>
+ void lock_when_for(condition &cond, Predicate pred,
+ duration_type const& rel_time){
+ typename condition::backdoor(cond).wait_when_for(*this, pred, rel_time);
+ }
+
+ void relock_on(condition & cond) {
+ typename condition::backdoor(cond).wait(*this);
+ }
+ void relock_on_until(condition & cond, boost::system_time const& abs_time) {
+ typename condition::backdoor(cond).wait_until(*this, abs_time);
+ }
+ template<typename duration_type>
+ void relock_on_for(condition & cond, duration_type const& rel_time) {
+ typename condition::backdoor(cond).wait_for(*this, rel_time);
+ }
+
+ template<typename Predicate>
+ void relock_when(condition &cond, Predicate pred){
+ typename condition::backdoor(cond).wait_when(*this, pred);
+ }
+ template<typename Predicate>
+ void relock_when_until(condition &cond, Predicate pred,
+ boost::system_time const& abs_time){
+ typename condition::backdoor(cond).wait_when_until(*this, pred, abs_time);
+ }
+ template<typename Predicate, typename duration_type>
+ void relock_when_for(condition &cond, Predicate pred,
+ duration_type const& rel_time){
+ typename condition::backdoor(cond).wait_when_for(*this, pred, rel_time);
+ }
+
+
+private:
+ //friend typename best_condition<Lockable>::type;
+ //friend typename best_condition_any<Lockable>::type;
+ friend class boost::condition_variable;
+ friend class boost::condition_variable_any;
+ friend class boost::interprocess::condition;
+};
+//]
+
+typedef condition_lockable<> thread_condition_mutex;
+typedef condition_lockable<interprocess_mutex> interprocess_condition_mutex;
+
+}
+}
+#endif
Modified: sandbox/synchro/boost/synchro/lockable_adapter.hpp
==============================================================================
--- sandbox/synchro/boost/synchro/lockable_adapter.hpp (original)
+++ sandbox/synchro/boost/synchro/lockable_adapter.hpp 2009-02-14 03:53:13 EST (Sat, 14 Feb 2009)
@@ -12,6 +12,7 @@
#define BOOST_SYNCHRO_LOCKABLE_ADAPTER__HPP
#include <boost/synchro/lockable_traits.hpp>
+#include <boost/synchro/timeout_exception.hpp>
#include <boost/noncopyable.hpp>
#include <boost/thread/thread_time.hpp>
@@ -55,6 +56,13 @@
template<typename TimeDuration>
bool try_lock_for(TimeDuration const & relative_time)
{return the_lock().try_lock_for(relative_time);}
+
+ void lock_until(system_time const & abs_time)
+ {the_lock().lock_until(abs_time);}
+ template<typename TimeDuration>
+ void lock_for(TimeDuration const & relative_time)
+ {return the_lock().lock_for(relative_time);}
+
protected:
TimedLock& the_lock() {return *static_cast<TimedLock*>(&this->lock_);}
};
@@ -78,10 +86,13 @@
{the_lock().unlock_shared();}
bool try_lock_shared_until(system_time const& t)
{return the_lock().try_lock_shared_until(t);}
+ void lock_shared_until(system_time const& t)
+ {the_lock().lock_shared_until(t);}
protected:
SharableLock& the_lock() {return *static_cast<SharableLock*>(&this->lock_);}
};
+
//]
//[upgrade_lockable_adapter
@@ -97,11 +108,9 @@
void lock_upgrade()
{the_lock().lock_upgrade();}
- bool try_lock_upgrade()
- { return the_lock().try_lock_upgrade(); }
+ bool try_lock_upgrade()
+ { return the_lock().try_lock_upgrade(); }
-
-
void unlock_upgrade()
{the_lock().unlock_upgrade();}
@@ -115,6 +124,8 @@
{the_lock().unlock_upgrade_and_lock_shared();}
bool try_lock_upgrade_until(system_time const&t)
{return the_lock().try_lock_upgrade_until(t);}
+ void lock_upgrade_until(system_time const&t)
+ {the_lock().lock_upgrade_until(t);}
protected:
UpgradableLock& the_lock() {return *static_cast<UpgradableLock*>(&this->lock_);}
@@ -124,7 +135,7 @@
//[lockable_adapter
template <
- typename Lockable
+ typename Lockable
, typename category=typename category_tag<Lockable>::type
, typename timed_interface=typename timed_interface_tag<Lockable>::type
> struct lockable_adapter;
Modified: sandbox/synchro/boost/synchro/lockers/strict_locker.hpp
==============================================================================
--- sandbox/synchro/boost/synchro/lockers/strict_locker.hpp (original)
+++ sandbox/synchro/boost/synchro/lockers/strict_locker.hpp 2009-02-14 03:53:13 EST (Sat, 14 Feb 2009)
@@ -72,7 +72,7 @@
operator bool_type() const;
bool operator!() const;
bool owns_lock() const;
- lockable_type* mutex() const;
+ bool is_locking(lockable_type* l) const; /*< strict locker specific function >*/
BOOST_ADRESS_OF_DELETE(strict_locker)
BOOST_HEAP_ALLOCATION_DELETE()
Modified: sandbox/synchro/boost/synchro/process/mutex.hpp
==============================================================================
--- sandbox/synchro/boost/synchro/process/mutex.hpp (original)
+++ sandbox/synchro/boost/synchro/process/mutex.hpp 2009-02-14 03:53:13 EST (Sat, 14 Feb 2009)
@@ -15,6 +15,7 @@
#include <boost/interprocess/sync/interprocess_condition.hpp>
#include <boost/synchro/lockable_traits.hpp>
#include <boost/synchro/process/lockable_scope_traits.hpp>
+#include <boost/synchro/timeout_exception.hpp>
namespace boost { namespace synchro {
@@ -44,6 +45,12 @@
template<typename TimeDuration>
bool try_lock_for(TimeDuration const & relative_time)
{return timed_lock(relative_time);}
+
+ void lock_until(system_time const & abs_time)
+ {if(!timed_lock(abs_time)) throw timeout_exception();}
+ template<typename TimeDuration>
+ void lock_for(TimeDuration const & relative_time)
+ {if(!timed_lock(relative_time)) throw timeout_exception();}
//bool try_lock_shared_until(system_time const& abs_time)
//{return timed_lock_shared(abs_time);}
Modified: sandbox/synchro/boost/synchro/process/named_mutex.hpp
==============================================================================
--- sandbox/synchro/boost/synchro/process/named_mutex.hpp (original)
+++ sandbox/synchro/boost/synchro/process/named_mutex.hpp 2009-02-14 03:53:13 EST (Sat, 14 Feb 2009)
@@ -14,6 +14,7 @@
#include <boost/interprocess/sync/named_mutex.hpp>
#include <boost/synchro/lockable_traits.hpp>
#include <boost/synchro/process/lockable_scope_traits.hpp>
+#include <boost/synchro/timeout_exception.hpp>
namespace boost { namespace synchro {
class named_mutex
@@ -50,7 +51,12 @@
template<typename TimeDuration>
bool try_lock_for(TimeDuration const & relative_time)
{return timed_lock(relative_time);}
-
+
+ void lock_until(system_time const & abs_time)
+ {if(!timed_lock(abs_time)) throw timeout_exception();}
+ template<typename TimeDuration>
+ void lock_for(TimeDuration const & relative_time)
+ {if(!timed_lock(relative_time)) throw timeout_exception();}
};
#if 0
typedef boost::interprocess::named_mutex named_mutex;
Modified: sandbox/synchro/boost/synchro/process/named_recursive_mutex.hpp
==============================================================================
--- sandbox/synchro/boost/synchro/process/named_recursive_mutex.hpp (original)
+++ sandbox/synchro/boost/synchro/process/named_recursive_mutex.hpp 2009-02-14 03:53:13 EST (Sat, 14 Feb 2009)
@@ -14,6 +14,7 @@
#include <boost/interprocess/sync/named_recursive_mutex.hpp>
#include <boost/synchro/lockable_traits.hpp>
#include <boost/synchro/process/lockable_scope_traits.hpp>
+#include <boost/synchro/timeout_exception.hpp>
namespace boost { namespace synchro {
class named_recursive_mutex
@@ -51,7 +52,11 @@
bool try_lock_for(TimeDuration const & relative_time)
{return timed_lock(relative_time);}
-
+ void lock_until(system_time const & abs_time)
+ {if(!timed_lock(abs_time)) throw timeout_exception();}
+ template<typename TimeDuration>
+ void lock_for(TimeDuration const & relative_time)
+ {if(!timed_lock(relative_time)) throw timeout_exception();}
};
#if 0
Modified: sandbox/synchro/boost/synchro/process/named_upgradable_mutex.hpp
==============================================================================
--- sandbox/synchro/boost/synchro/process/named_upgradable_mutex.hpp (original)
+++ sandbox/synchro/boost/synchro/process/named_upgradable_mutex.hpp 2009-02-14 03:53:13 EST (Sat, 14 Feb 2009)
@@ -14,6 +14,7 @@
#include <boost/interprocess/sync/named_upgradable_mutex.hpp>
#include <boost/synchro/lockable_traits.hpp>
#include <boost/synchro/process/lockable_scope_traits.hpp>
+#include <boost/synchro/timeout_exception.hpp>
namespace boost { namespace synchro {
@@ -48,7 +49,13 @@
template<typename TimeDuration>
bool try_lock_for(TimeDuration const & relative_time)
{return timed_lock(relative_time);}
-
+
+ void lock_until(system_time const & abs_time)
+ {if(!timed_lock(abs_time)) throw timeout_exception();}
+ template<typename TimeDuration>
+ void lock_for(TimeDuration const & relative_time)
+ {if(!timed_lock(relative_time)) throw timeout_exception();}
+
void lock_shared()
{lock_sharable();}
@@ -57,6 +64,8 @@
bool try_lock_shared_until(const boost::posix_time::ptime &abs_time)
{return timed_lock_sharable(abs_time);}
+ void lock_shared_until(const boost::posix_time::ptime &abs_time)
+ {if(!timed_lock_sharable(abs_time)) throw timeout_exception();}
void unlock_shared()
{unlock_sharable();}
@@ -67,8 +76,10 @@
bool try_lock_upgrade()
{return try_lock_upgradable();}
- bool tru_lock_upgrade_until(const boost::posix_time::ptime &abs_time)
+ bool try_lock_upgrade_until(const boost::posix_time::ptime &abs_time)
{return timed_lock_upgradable(abs_time);}
+ void lock_upgrade_until(const boost::posix_time::ptime &abs_time)
+ {if(!timed_lock_upgradable(abs_time)) throw timeout_exception();}
void unlock_upgrade()
{unlock_upgradable();}
Modified: sandbox/synchro/boost/synchro/process/recursive_mutex.hpp
==============================================================================
--- sandbox/synchro/boost/synchro/process/recursive_mutex.hpp (original)
+++ sandbox/synchro/boost/synchro/process/recursive_mutex.hpp 2009-02-14 03:53:13 EST (Sat, 14 Feb 2009)
@@ -14,6 +14,7 @@
#include <boost/interprocess/sync/interprocess_recursive_mutex.hpp>
#include <boost/synchro/lockable_traits.hpp>
#include <boost/synchro/process/lockable_scope_traits.hpp>
+#include <boost/synchro/timeout_exception.hpp>
namespace boost { namespace synchro {
@@ -45,6 +46,12 @@
template<typename TimeDuration>
bool try_lock_for(TimeDuration const & relative_time)
{return timed_lock(relative_time);}
+
+ void lock_until(system_time const & abs_time)
+ {if(!timed_lock(abs_time)) throw timeout_exception();}
+ template<typename TimeDuration>
+ void lock_for(TimeDuration const & relative_time)
+ {if(!timed_lock(relative_time)) throw timeout_exception();}
//bool try_lock_shared_until(system_time const& abs_time)
//{return timed_lock_shared(abs_time);}
Modified: sandbox/synchro/boost/synchro/process/upgradable_mutex.hpp
==============================================================================
--- sandbox/synchro/boost/synchro/process/upgradable_mutex.hpp (original)
+++ sandbox/synchro/boost/synchro/process/upgradable_mutex.hpp 2009-02-14 03:53:13 EST (Sat, 14 Feb 2009)
@@ -14,6 +14,7 @@
#include <boost/interprocess/sync/interprocess_upgradable_mutex.hpp>
#include <boost/synchro/lockable_traits.hpp>
#include <boost/synchro/process/lockable_scope_traits.hpp>
+#include <boost/synchro/timeout_exception.hpp>
namespace boost { namespace synchro {
@@ -44,53 +45,63 @@
bool try_lock_for(TimeDuration const & relative_time)
{return timed_lock(relative_time);}
+ void try_lock_until(throw_timeout_t&, system_time const & abs_time)
+ {if(!timed_lock(abs_time)) throw timeout_exception();}
+ template<typename TimeDuration>
+ void try_lock_for(throw_timeout_t&, TimeDuration const & relative_time)
+ {if(!timed_lock(relative_time)) throw timeout_exception();}
+
void lock_shared()
{lock_sharable();}
- bool try_lock_shared()
- {return try_lock_sharable();}
+ bool try_lock_shared()
+ {return try_lock_sharable();}
- bool try_lock_shared_until(const boost::posix_time::ptime &abs_time)
- {return timed_lock_sharable(abs_time);}
+ bool try_lock_shared_until(const boost::posix_time::ptime &abs_time)
+ {return timed_lock_sharable(abs_time);}
+ void try_lock_shared_until(throw_timeout_t&, const boost::posix_time::ptime &abs_time)
+ {if(!timed_lock_sharable(abs_time)) throw timeout_exception();}
- void unlock_shared()
- {unlock_sharable();}
+ void unlock_shared()
+ {unlock_sharable();}
- void lock_upgrade()
- {lock_upgradable();}
+ void lock_upgrade()
+ {lock_upgradable();}
- bool try_lock_upgrade()
- {return try_lock_upgradable();}
+ bool try_lock_upgrade()
+ {return try_lock_upgradable();}
- bool try_lock_upgrade_until(const boost::posix_time::ptime &abs_time)
- {return timed_lock_upgradable(abs_time);}
+ bool try_lock_upgrade_until(const boost::posix_time::ptime &abs_time)
+ {return timed_lock_upgradable(abs_time);}
+ void tru_lock_upgrade_until(throw_timeout_t&, const boost::posix_time::ptime &abs_time)
+ {if(!timed_lock_upgradable(abs_time)) throw timeout_exception();}
- void unlock_upgrade()
- {unlock_upgradable();}
+ void unlock_upgrade()
+ {unlock_upgradable();}
- void unlock_and_lock_upgrade()
- {unlock_and_lock_upgrade();}
+ void unlock_and_lock_upgrade()
+ {unlock_and_lock_upgrade();}
- void unlock_and_lock_shared()
- {unlock_and_lock_sharable();}
+ void unlock_and_lock_shared()
+ {unlock_and_lock_sharable();}
- void unlock_upgrade_and_lock_shared()
- {unlock_upgradable_and_lock_sharable();}
+ void unlock_upgrade_and_lock_shared()
+ {unlock_upgradable_and_lock_sharable();}
- void unlock_upgrade_and_lock()
- {unlock_upgrade_and_lock();}
+ void unlock_upgrade_and_lock()
+ {unlock_upgrade_and_lock();}
- bool try_unlock_upgrade_and_lock()
- {return try_unlock_upgradable_and_lock();}
+ bool try_unlock_upgrade_and_lock()
+ {return try_unlock_upgradable_and_lock();}
- bool timed_unlock_upgrade_and_lock(const boost::posix_time::ptime &abs_time)
- {return timed_unlock_upgradable_and_lock(abs_time);}
+ bool try_unlock_upgrade_and_lock_until(const boost::posix_time::ptime &abs_time)
+ {return timed_unlock_upgradable_and_lock(abs_time);}
- bool try_unlock_share_and_lock()
- {return try_unlock_sharable_and_lock();}
+ bool try_unlock_share_and_lock()
+ {return try_unlock_sharable_and_lock();}
- bool try_unlock_share_and_lock_upgrade()
- {return try_unlock_sharable_and_lock_upgradable();}
+ bool try_unlock_share_and_lock_upgrade()
+ {return try_unlock_sharable_and_lock_upgradable();}
};
Modified: sandbox/synchro/boost/synchro/thread/mutex.hpp
==============================================================================
--- sandbox/synchro/boost/synchro/thread/mutex.hpp (original)
+++ sandbox/synchro/boost/synchro/thread/mutex.hpp 2009-02-14 03:53:13 EST (Sat, 14 Feb 2009)
@@ -17,6 +17,7 @@
#include <boost/synchro/lockable_traits.hpp>
#include <boost/thread/thread_time.hpp>
#include <boost/synchro/thread/lockable_scope_traits.hpp>
+#include <boost/synchro/timeout_exception.hpp>
namespace boost { namespace synchro {
@@ -41,11 +42,7 @@
typedef boost::condition_variable best_condition_type;
typedef boost::condition_variable_any best_condition_any_type;
- thread_mutex() : lock_traits_base<multi_threaded_tag,exclusive_lock_tag,
- non_recursive_tag, hasnt_timed_interface_tag,
- process_lifetime_tag,anonymous_tag,
- mutex>()
- {}
+ thread_mutex() {}
};
template <>
@@ -118,16 +115,24 @@
thread_timed_mutex &operator=(const thread_mutex &);
public:
-
+
typedef boost::condition_variable_any best_condition_type;
typedef boost::condition_variable_any best_condition_any_type;
+ thread_timed_mutex () {}
+
bool try_lock_until(system_time const & abs_time)
{return timed_lock(abs_time);}
template<typename TimeDuration>
bool try_lock_for(TimeDuration const & relative_time)
{return timed_lock(relative_time);}
+ void lock_until(system_time const & abs_time)
+ {if(!timed_lock(abs_time)) throw timeout_exception();}
+ template<typename TimeDuration>
+ void lock_for(TimeDuration const & relative_time)
+ {if(!timed_lock(relative_time)) throw timeout_exception();}
+
};
#if 0
Modified: sandbox/synchro/boost/synchro/thread/recursive_mutex.hpp
==============================================================================
--- sandbox/synchro/boost/synchro/thread/recursive_mutex.hpp (original)
+++ sandbox/synchro/boost/synchro/thread/recursive_mutex.hpp 2009-02-14 03:53:13 EST (Sat, 14 Feb 2009)
@@ -15,6 +15,7 @@
#include <boost/thread/condition_variable.hpp>
#include <boost/synchro/thread/lockable_scope_traits.hpp>
#include <boost/synchro/lockable_traits.hpp>
+#include <boost/synchro/timeout_exception.hpp>
namespace boost { namespace synchro {
@@ -102,15 +103,8 @@
thread_recursive_timed_mutex &operator=(const thread_recursive_timed_mutex &);
public:
- thread_recursive_timed_mutex() : lock_traits_base<
- multi_threaded_tag,
- exclusive_lock_tag,
- recursive_tag,
- has_timed_interface_tag,
- process_lifetime_tag,
- anonymous_tag,
- recursive_timed_mutex
->(){}
+ thread_recursive_timed_mutex() {}
+
typedef boost::condition_variable_any best_condition_type;
typedef boost::condition_variable_any best_condition_any_type;
@@ -120,6 +114,12 @@
bool try_lock_for(TimeDuration const & relative_time)
{return timed_lock(relative_time);}
+ void lock_until(system_time const & abs_time)
+ {if(!timed_lock(abs_time)) throw timeout_exception();}
+ template<typename TimeDuration>
+ void lock_for(TimeDuration const & relative_time)
+ {if(!timed_lock(relative_time)) throw timeout_exception();}
+
};
#if 0
Modified: sandbox/synchro/boost/synchro/thread/shared_mutex.hpp
==============================================================================
--- sandbox/synchro/boost/synchro/thread/shared_mutex.hpp (original)
+++ sandbox/synchro/boost/synchro/thread/shared_mutex.hpp 2009-02-14 03:53:13 EST (Sat, 14 Feb 2009)
@@ -15,6 +15,7 @@
#include <boost/thread/condition_variable.hpp>
#include <boost/synchro/lockable_traits.hpp>
#include <boost/synchro/thread/lockable_scope_traits.hpp>
+#include <boost/synchro/timeout_exception.hpp>
namespace boost { namespace synchro {
@@ -45,10 +46,18 @@
template<typename TimeDuration>
bool try_lock_for(TimeDuration const & relative_time)
{return timed_lock(relative_time);}
+
+ void lock_until(system_time const & abs_time)
+ {if(!timed_lock(abs_time)) throw timeout_exception();}
+ template<typename TimeDuration>
+ void lock_for(TimeDuration const & relative_time)
+ {if(!timed_lock(relative_time)) throw timeout_exception();}
bool try_lock_shared_until(system_time const& abs_time)
{return timed_lock_shared(abs_time);}
+ void lock_shared_until(system_time const& abs_time)
+ {if(!timed_lock_shared(abs_time)) throw timeout_exception();}
};
Added: sandbox/synchro/boost/synchro/timeout_exception.hpp
==============================================================================
--- (empty file)
+++ sandbox/synchro/boost/synchro/timeout_exception.hpp 2009-02-14 03:53:13 EST (Sat, 14 Feb 2009)
@@ -0,0 +1,31 @@
+//////////////////////////////////////////////////////////////////////////////
+//
+// (C) Copyright Vicente J. Botet Escriba 2008-2009. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/synchro for documentation.
+//
+//////////////////////////////////////////////////////////////////////////////
+
+#ifndef BOOST_SYNCHRO_TIMEOUT_EXCEPTION__HPP
+#define BOOST_SYNCHRO_TIMEOUT_EXCEPTION__HPP
+
+#include <exception>
+#include <stdexcept>
+
+namespace boost { namespace synchro {
+
+ class timeout_exception : public std::logic_error {
+ public:
+ timeout_exception() : std::logic_error("timeout exception") {}
+ };
+
+ struct throw_timeout_t {};
+ struct nothrow_timeout_t {};
+ const throw_timeout_t throw_timeout ={};
+ const nothrow_timeout_t no_throw_timeout ={};
+
+}
+}
+#endif
Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk