00001 00010 #ifndef __PIPELINE_H__ 00011 #define __PIPELINE_H__ 00012 00013 #include <vector> 00014 using namespace std; 00015 00016 #include "vpControl.h" 00017 00018 #include "InputObject.h" 00019 #include "MidiInput.h" 00020 #include "JoystickInput.h" 00021 00022 #include "OutputObject.h" 00023 #include "NetOutput.h" 00024 00032 #define PIPELINE_THREAD_INTERVAL 10 00033 00035 00043 class Pipeline 00044 { 00045 private: 00047 vpHash *controlMap; 00048 00050 vector<InputObject *> inputObjects; 00051 00053 vector<OutputObject *> outputObjects; 00054 00056 HANDLE inputMutex; 00057 00059 HANDLE outputMutex; 00060 00062 HANDLE threadHandle; 00063 00065 DWORD threadID; 00066 00068 bool isRunning; 00069 00070 public: 00072 00075 Pipeline(vpHash *controlMap); 00076 00078 ~Pipeline(); 00079 00081 00085 unsigned int addInputObject(InputObject *input); 00086 00088 00092 unsigned int addOutputObject(OutputObject *output); 00093 00095 DWORD threadProc(); 00096 00098 void threadBegin(); 00099 00101 void threadEnd(); 00102 }; 00103 00104 static DWORD WINAPI pipelineThreadProc(Pipeline *instance); 00105 00106 #endif /* __PIPELINE_H__ */