00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #include "JackSystemDeps.h"
00022 #include "JackFreewheelDriver.h"
00023 #include "JackEngineControl.h"
00024 #include "JackLockedEngine.h"
00025
00026 namespace Jack
00027 {
00028
00029
00030
00031 int JackFreewheelDriver::Process()
00032 {
00033 int res = 0;
00034
00035 jack_log("JackFreewheelDriver::Process master %lld", fEngineControl->fTimeOutUsecs);
00036 JackDriver::CycleTakeBeginTime();
00037
00038 if (fEngine->Process(fBeginDateUst, fEndDateUst)) {
00039
00040 if (ResumeRefNum()) {
00041 jack_error("JackFreewheelDriver::Process: ResumeRefNum error");
00042 res = -1;
00043 }
00044
00045
00046 if (SuspendRefNum() < 0) {
00047 jack_error("JackFreewheelDriver::ProcessSync: SuspendRefNum error");
00048
00049 return 0;
00050 }
00051
00052 } else {
00053 jack_error("JackFreewheelDriver::Process: Process error");
00054 res = -1;
00055 }
00056
00057 return res;
00058 }
00059
00060
00061
00062 int JackFreewheelDriver::ProcessReadSync()
00063 {
00064 if (ResumeRefNum() < 0) {
00065 jack_error("JackFreewheelDriver::ProcessReadSync: ResumeRefNum error");
00066 return -1;
00067 }
00068 return 0;
00069 }
00070
00071 int JackFreewheelDriver::ProcessWriteSync()
00072 {
00073
00074 if (JackDriver::SuspendRefNum() < 0) {
00075 jack_error("JackFreewheelDriver::ProcessSync SuspendRefNum error");
00076 return -1;
00077 }
00078 return 0;
00079 }
00080
00081 int JackFreewheelDriver::ProcessReadAsync()
00082 {
00083 if (ResumeRefNum() < 0) {
00084 jack_error("JackFreewheelDriver::ProcessReadAsync: ResumeRefNum error");
00085 return -1;
00086 }
00087 return 0;
00088 }
00089
00090 int JackFreewheelDriver::ProcessWriteAsync()
00091 {
00092 return 0;
00093 }
00094
00095 int JackFreewheelDriver::SuspendRefNum()
00096 {
00097 return fGraphManager->SuspendRefNum(&fClientControl, fSynchroTable, FREEWHEEL_DRIVER_TIMEOUT * 1000000);
00098 }
00099
00100 }