![]() |
VR-Link API Documentation for HLA 1516
|
00001 /********************************************************************* 00002 ** Copyright (c) 1992-2010 VT MAK 00003 ** All rights reserved. 00004 *********************************************************************/ 00005 00006 00007 #ifndef tRefObjList_H_ 00008 #define tRefObjList_H_ 00009 00010 #if DtTENA 00011 00012 00013 #include <vlutil/vlMachineTypes.h> 00014 #include <vlutil/vlTime.h> 00015 #include <vlutil/vlString.h> 00016 #include <vlutil/vlList.h> 00017 #include "refObjCbInfo.h" 00018 #include <vlutil/vlHashlist.h> 00019 00020 #include <vector> 00021 00025 00026 class DT_DLL_VL DtExerciseConn; 00027 class DT_DLL_VL DtHlaObject; 00028 class DT_DLL_VL DtStateMsg; 00029 class DT_DLL_VL DtReflectedObject; 00030 class DT_DLL_VL DtBaseHashKey; 00031 00033 typedef bool (*DtDiscoveryCondition)(DtReflectedObject* refObj, void* usr); 00034 00036 typedef DtReflectedObject* (*DtCreateReflectedObjFn)(DtExerciseConn*); 00037 00044 class DT_DLL_VL DtReflectedObjectList 00045 { 00046 00047 public: 00048 00050 DtReflectedObjectList(DtExerciseConn* exConn); 00051 00053 virtual ~DtReflectedObjectList(); 00054 00055 private: 00056 00058 DtReflectedObjectList(const DtReflectedObjectList& orig); 00059 00061 DtReflectedObjectList& operator=(const DtReflectedObjectList& orig); 00062 00063 public: 00064 00066 virtual DtExerciseConn* exerciseConn() const; 00067 00069 virtual void print(); 00070 00073 virtual void setTimeoutProcessing(bool on); 00074 00076 virtual DtReflectedObject* firstObj() const; 00077 virtual DtReflectedObject* lastObj() const; 00078 00080 virtual void setTimeoutInterval(DtTime time); 00081 virtual DtTime timeoutInterval(); 00082 00084 virtual int count() const; 00085 00088 virtual void setDiscoveryCondition(DtDiscoveryCondition fn, void* usr); 00089 00092 virtual void clearDiscoveryCondition(); 00093 00095 virtual void setReflectedObjectCreationFunction( 00096 DtCreateReflectedObjFn fn); 00097 00100 virtual void setUseTenaTimeForSets(bool yesNo); 00101 00102 virtual void addObjectAdditionCallback(DtReflectedObjectCallbackFunction cb, void* userData); 00103 00104 virtual void addObjectRemovalCallback(DtReflectedObjectCallbackFunction cb, void* userData); 00105 00106 virtual void removeObjectAdditionCallback( DtReflectedObjectCallbackFunction cb, void* userData); 00107 00108 virtual void removeObjectRemovalCallback( DtReflectedObjectCallbackFunction cb, void* userData); 00109 00110 protected: 00111 00114 virtual void processObjectAddition(DtReflectedObject *); 00115 00118 virtual void processObjectRemoval(DtReflectedObject *); 00119 00120 virtual void objectAdded(DtReflectedObject* object); 00121 00122 void init(const std::vector<DtString>& interfaceNames); 00123 00124 protected: 00125 00128 static void objectAdditionCallback(DtReflectedObject *obj, void *userData); 00129 00132 static void objectRemovalCallback(DtReflectedObject *obj, void *userData); 00133 00134 protected: 00135 00136 std::vector<DtString> myInterfaceNames; 00137 DtExerciseConn* myExConn; 00138 DtTime myTimeoutInterval; 00139 bool myTimeoutProcessingFlag; 00140 DtIntrusiveList myObjectList; 00141 }; 00142 00143 #endif //! DtTENA 00144 #endif //! DtReflectedObjectList_H_ 00145