00001 /* 00002 * \author Andy Foresberg (asf) and Daniel Keefe (dfk) 00003 * 00004 * \file SynchedSystem.H 00005 * 00006 */ 00007 00008 00009 00010 #ifndef SYNCHEDSYSTEM_H 00011 #define SYNCHEDSYSTEM_H 00012 00013 namespace VRG3D { 00014 00015 00027 class SynchedSystem 00028 { 00029 public: 00030 00032 static double getLocalTime(); 00033 static double getAppStartTime() { return _appStartTime; } 00034 static double getAppRunningTime(){ return getLocalTime() - _appStartTime; } 00035 00036 enum TimeUpdateMethod { 00037 USE_LOCAL_SYSTEM_TIME, // used in non-cluster situations (default) 00038 PROGRAM_UPDATES_TIME // used in clustered situations 00039 }; 00040 00043 static void setProgramUpdatesTime(double applicationStartTime); 00044 00048 static void updateLocalTime(double t); 00049 00050 static TimeUpdateMethod getTimeUpdateMethod() { return _timeUpdateMethod; } 00051 00052 protected: 00053 static TimeUpdateMethod _timeUpdateMethod; 00054 static double _appStartTime; 00055 static double _localTime; 00056 }; 00057 00058 } // end namespace 00059 00060 #endif