00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef __JackWaitThreadedDriver__
00022 #define __JackWaitThreadedDriver__
00023
00024 #include "JackThreadedDriver.h"
00025 #include "JackAudioDriver.h"
00026
00027 namespace Jack
00028 {
00029
00038 class SERVER_EXPORT JackWaitThreadedDriver : public JackThreadedDriver
00039 {
00040 private:
00041
00042 struct SERVER_EXPORT JackDriverStarter : public JackRunnableInterface
00043 {
00044
00045 JackDriver* fDriver;
00046 JackThread fThread;
00047 bool fRunning;
00048
00049 JackDriverStarter(JackDriver* driver)
00050 :fDriver(driver),fThread(this),fRunning(false)
00051 {}
00052
00053 ~JackDriverStarter()
00054 {
00055 fThread.Kill();
00056 }
00057
00058 int Start()
00059 {
00060 fRunning = false;
00061 return fThread.Start();
00062 }
00063
00064
00065 bool Execute()
00066 {
00067
00068 fDriver->Initialize();
00069 fRunning = true;
00070 return false;
00071 }
00072
00073 };
00074
00075 JackDriverStarter fStarter;
00076
00077 public:
00078
00079 JackWaitThreadedDriver(JackDriver* netdriver)
00080 :JackThreadedDriver(netdriver),fStarter(netdriver)
00081 {}
00082 virtual ~JackWaitThreadedDriver()
00083 {}
00084
00085
00086 bool Init();
00087 bool Execute();
00088 };
00089
00090
00091 }
00092
00093
00094 #endif