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
00034 class SERVER_EXPORT JackWaitThreadedDriver : public JackThreadedDriver
00035 {
00036 private:
00037
00038 struct SERVER_EXPORT JackDriverStarter : public JackRunnableInterface
00039 {
00040
00041 JackDriver* fDriver;
00042 JackThread fThread;
00043 bool fRunning;
00044
00045 JackDriverStarter(JackDriver* driver)
00046 :fDriver(driver),fThread(this),fRunning(false)
00047 {}
00048
00049 ~JackDriverStarter()
00050 {
00051 fThread.Kill();
00052 }
00053
00054 int Start()
00055 {
00056 fRunning = false;
00057 return fThread.Start();
00058 }
00059
00060
00061 bool Execute()
00062 {
00063
00064 fDriver->Init();
00065 fRunning = true;
00066 return false;
00067 }
00068
00069 };
00070
00071 JackDriverStarter fStarter;
00072
00073 public:
00074
00075 JackWaitThreadedDriver(JackDriver* netdriver)
00076 :JackThreadedDriver(netdriver),fStarter(netdriver)
00077 {}
00078 virtual ~JackWaitThreadedDriver()
00079 {}
00080
00081
00082 bool Init();
00083 bool Execute();
00084 };
00085
00086
00087 }
00088
00089
00090 #endif