diff options
author | cvs2svn <admin@example.com> | 2010-02-14 12:53:07 +0000 |
---|---|---|
committer | cvs2svn <admin@example.com> | 2010-02-14 12:53:07 +0000 |
commit | 038a1d31955a315b5fdf8cee142623226ac3e48e (patch) | |
tree | bceeb16f00f4e73f602a56285093d897052d0063 /tools/future.h | |
parent | 56b10fbbe13a6eb219f41da6d8a78a37d15bd378 (diff) | |
download | xineliboutput-branch-1_o_x.tar.gz xineliboutput-branch-1_o_x.tar.bz2 |
This commit was manufactured by cvs2svn to create branch 'branch-1_o_x'.branch-1_o_x
Diffstat (limited to 'tools/future.h')
-rw-r--r-- | tools/future.h | 87 |
1 files changed, 0 insertions, 87 deletions
diff --git a/tools/future.h b/tools/future.h deleted file mode 100644 index bdd0498c..00000000 --- a/tools/future.h +++ /dev/null @@ -1,87 +0,0 @@ -/* - * future.h: A variable that gets its value in future. - * Used to convert asynchronous IPCs to synchronous. - * - * See the main source file 'xineliboutput.c' for copyright information and - * how to reach the author. - * - * $Id: future.h,v 1.2 2006-08-19 23:44:07 phintuka Exp $ - * - */ - -#ifndef __FUTURE_H -#define __FUTURE_H - -#include <vdr/thread.h> - -template <class T> -class cFuture { - - private: - cMutex mutex; - cCondVar cond; - bool m_Ready; - T m_Value; - - public: - - cFuture() - { - m_Ready = false; - } - - void Reset(void) - { - cMutexLock l(&mutex); - m_Ready = false; - } - - // - // Producer interface - // - - void Set(T& Value) - { - cMutexLock l(&mutex); - m_Value = Value; - m_Ready = true; - cond.Broadcast(); - } - - // - // Consumer interface - // - - bool Wait(int Timeout = -1) - { - cMutexLock l(&mutex); - - if(Timeout==0 || m_Ready) - return m_Ready; - - if(Timeout >= 0) - return cond.TimedWait(mutex, Timeout) && m_Ready; - - while(!m_Ready) - cond.Wait(mutex); - - return m_Ready; - } - - bool IsReady(void) - { - cMutexLock l(&mutex); - return m_Ready; - } - - T Value(void) - { - cMutexLock l(&mutex); - while(!m_Ready) - cond.Wait(mutex); - return m_Value; - } -}; - - -#endif // __FUTURE_H |