summaryrefslogtreecommitdiff
path: root/tools/future.h
diff options
context:
space:
mode:
authorcvs2svn <admin@example.com>2010-02-14 12:53:07 +0000
committercvs2svn <admin@example.com>2010-02-14 12:53:07 +0000
commit038a1d31955a315b5fdf8cee142623226ac3e48e (patch)
treebceeb16f00f4e73f602a56285093d897052d0063 /tools/future.h
parent56b10fbbe13a6eb219f41da6d8a78a37d15bd378 (diff)
downloadxineliboutput-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.h87
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