![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /******************************************************************************* 00002 ** Copyright (c) 2002 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 *******************************************************************************/ 00005 /******************************************************************************* 00006 ** $RCSfile: remBatchMgr.h,v $ $Revision: 1.14 $ $State: Exp $ 00007 *******************************************************************************/ 00008 00011 00012 #ifndef DtRemoteBatchManager_H_ 00013 #define DtRemoteBatchManager_H_ 00014 00015 #include <vlutil/vlMachineTypes.h> 00016 #include <vlutil/vlFilename.h> 00017 #include <vlutil/vlTime.h> 00018 #include <vlutil/vlList.h> 00019 00020 #include "vrfcontrol/vrfController.h" 00021 00022 class DtScenarioBatchIterator; 00023 class DtRemoteLoggerController; 00024 class DtExerciseConn; 00025 class DtClock; 00026 class DtScenario; 00027 class DtScenarioBatch; 00028 00029 typedef void (*DtScenarioCallbackFcn)(void *usr); 00030 00037 #include "vrfcontrol/vrfcontrolDefines.h" 00038 class DT_DLL_vrfcontrol DtRemoteBatchManager 00039 { 00041 enum State 00042 { 00043 StateIdle, 00044 StateRunStart, 00045 StateLoading, 00046 StateRunning, 00047 StateRunComplete, 00048 StateRunBatchComplete, 00049 StateErrorLoading, 00050 StateClosing, 00051 }; 00052 00053 public: 00054 DtRemoteBatchManager(DtVrfRemoteController *controller, 00055 DtExerciseConn* exConn); 00056 virtual ~DtRemoteBatchManager(); 00057 00059 virtual bool init(); 00060 00061 virtual bool loadBatch(const DtFilename &batchFileName, 00062 DtBackendRemappingFcn fcn = NULL, void* userData = NULL); 00063 virtual bool loadBatch(const DtScenarioBatch &batch, 00064 DtBackendRemappingFcn fcn = NULL, void* userData = NULL); 00067 virtual bool runBatch(); 00069 virtual bool stopBatch(); 00071 virtual bool running(); 00073 virtual bool done(); 00074 00076 virtual const DtScenarioBatchIterator* batchIterator(); 00077 00079 virtual void processBackendsLoadedCallback(); 00080 00082 virtual void addScenarioLoadingCallback(DtScenarioCallbackFcn fcn, void* usr); 00083 virtual void removeScenarioLoadingCallback(DtScenarioCallbackFcn fcn, void* usr); 00084 00086 virtual void addScenarioLoadingErrorCallback(DtScenarioCallbackFcn fcn, void* usr); 00087 virtual void removeScenarioLoadingErrorCallback(DtScenarioCallbackFcn fcn, void* usr); 00088 00090 virtual void addScenarioBatchCompleteCallback(DtScenarioCallbackFcn fcn, void* usr); 00091 virtual void removeScenarioBatchCompleteCallback(DtScenarioCallbackFcn fcn, void* usr); 00092 00094 virtual void addScenarioClosingCallback(DtScenarioCallbackFcn fcn, void* usr); 00095 virtual void removeScenarioClosingCallback(DtScenarioCallbackFcn fcn, void* usr); 00096 00098 virtual void processScenarioCallbacksForState(const State &state); 00099 00101 virtual void removeCallbacksFor(DtScenarioCallbackFcn fcn, void* usrData, const State state); 00102 00105 virtual void nextScenarioRun(); 00106 00109 virtual void nextScenario(); 00110 00112 virtual void idle(); 00113 00115 virtual void scheduleNextRun(); 00116 00117 public: 00118 00120 static void tickCb(void* usr); 00121 00124 static void backendsLoadedCallback(void *usr); 00125 00126 protected: 00128 DtRemoteBatchManager(); 00129 DtRemoteBatchManager(const DtRemoteBatchManager &orig); 00130 DtRemoteBatchManager& operator=(const DtRemoteBatchManager &orig); 00131 00134 virtual DtFilename constructLoggerFilename(const DtScenario* scenario); 00135 00137 virtual void tick(); 00138 00141 virtual double currentSimulationTime() const; 00142 00143 protected: 00144 DtExerciseConn* myExConn; 00145 DtScenarioBatchIterator *myBatchIterator; 00146 DtRemoteLoggerController *myLoggerControl; 00147 DtVrfRemoteController *myRemoteController; 00148 DtClock *myClock; 00149 00150 State myState; 00151 bool myRunning; 00152 bool myDone; 00153 DtTime myRunStartTime; 00154 bool myBackendsLoaded; 00155 00156 DtList myCallbacks; 00157 00158 DtBackendRemappingFcn myRemappingFcn; 00159 void* myRemappingFcnUserData; 00160 }; 00161 00162 #endif