![]() |
MAK RTIspy API Documentation for HLA 1516
|
00001 /********************************************************************* 00002 ** Copyright (c) 1998 MaK Technologies, Inc. 00003 ** All rights reserved. 00004 *********************************************************************/ 00005 /********************************************************************* 00006 ** $RCSfile: federate.h,v $ $Revision: 1.11 $ $State: Exp $ 00007 *********************************************************************/ 00008 00011 00012 #ifndef DtFederate_H_ 00013 #define DtFederate_H_ 00014 00015 #include "rtiMsConfig.h" 00016 #include <vlutil/vlMachineTypes.h> 00017 #include "syncHashlist.h" 00018 #include <vlutil/vlHashKeys.h> 00019 #include <vlutil/vlTime.h> 00020 #include <vlutil/vlPrint.h> 00021 #include <vlutil/vlUtil.h> 00022 #include <vlutil/vlInetAddr.h> 00023 #include <rtiVersion.h> 00024 #include "internalTypes.h" 00025 #include "saveStatusMsg.h" 00026 #include "restoreStatusMsg.h" 00027 00028 00031 class DtFederate; 00032 typedef DtFederate* (*DtFederateCreator)(const char* type, const char* name, 00033 const char* fedHostName, DtFederateHandle handle, 00034 unsigned long connHandle, const DtSyncHashlist& list, 00035 const MAKRti::DtInetAddr& host, DtHlaVersionId hlaVersion, 00036 const MAKRti::DtInetAddr& webServerHost, int webServerPort); 00037 00038 00039 00040 class DT_DLL_EXEC DtFederate 00041 { 00042 public: 00043 00045 DtFederate(const char* type, const char* name, const char* fedHostName, 00046 DtFederateHandle handle, unsigned long connHandle, 00047 const DtSyncHashlist& list, const MAKRti::DtInetAddr& host, 00048 DtHlaVersionId hlaVersion, const MAKRti::DtInetAddr& webServerHost, 00049 int webServerPort); 00050 00052 virtual ~DtFederate(); 00053 00054 private: 00056 DtFederate(const DtFederate&); 00058 DtFederate& operator=(const DtFederate &); 00059 public: 00061 virtual void setFederateSyncPtAchieved(const char* name, bool successful); 00062 virtual bool federateSyncPtAchieved(const char* name); 00063 virtual bool federateSyncPtAchievedSuccessfully(const char* name); 00064 00066 virtual void addFederateSyncPt(const char* name, DtSyncPt* item); 00067 virtual DtSyncPt* removeFederateSyncPt(const char* name); 00068 00070 virtual char* getType() const; 00071 00073 virtual char* getName() const; 00074 00076 virtual bool isNamed() const; 00077 00079 virtual DtFederateHandle getHandle() const; 00080 00082 virtual const char* getDescription() const; 00083 00085 virtual unsigned long getConnectionHandle() const; 00086 virtual void setConnectionHandle(unsigned long handle); 00087 00089 virtual MAKRti::DtInetAddr getFederateHost() const; 00090 virtual void setFederateHost( const MAKRti::DtInetAddr& hostAddr ); 00091 00093 virtual char* getFederateHostName() const; 00094 virtual void setFederateHostName( char* hostname ); 00095 00097 virtual const DtSyncHashlist& syncPtList() const; 00098 00100 virtual DtTime federateHeartbeat() const; 00101 virtual void setFederateHeartbeat(MAKRti::DtTime time); 00102 00104 virtual void setSaveStatus(DtSaveStatus status); 00105 virtual DtSaveStatus saveStatus() const; 00106 00108 virtual void setRestoreStatus(DtRestoreStatus status); 00109 virtual DtRestoreStatus restoreStatus() const; 00110 00112 void setWebServerHost(const MAKRti::DtInetAddr& hostAddr); 00113 MAKRti::DtInetAddr getWebServerHost() const; 00114 00116 void setWebServerPort(int port); 00117 int getWebServerPort() const; 00118 00120 virtual void setHlaVersion(DtHlaVersionId version); 00121 virtual DtHlaVersionId hlaVersion() const; 00122 00123 00124 public: 00125 00127 static DtFederate* create(const char* type, const char* name, 00128 const char* fedHostName, DtFederateHandle handle, 00129 unsigned long connHandle, const DtSyncHashlist& list, 00130 const MAKRti::DtInetAddr& host, DtHlaVersionId hlaVersion, 00131 const MAKRti::DtInetAddr& webServerHost, int webServerPort); 00132 00136 static void setCreatorFunction(DtFederateCreator creator); 00137 00138 00139 00140 protected: 00141 char* myType; 00142 char* myName; 00143 bool myIsNamed; 00144 char* myFederateHostName; 00145 MAKRti::DtTime myHeartbeat; 00146 DtFederateHandle myHandle; 00147 DtSaveStatus mySaveStatus; 00148 DtRestoreStatus myRestoreStatus; 00149 unsigned long myConnectionHandle; 00150 DtSyncHashlist myHashlist; 00151 MAKRti::DtInetAddr myFederateHost; 00152 MAKRti::DtInetAddr myWebServerHost; 00153 int myWebServerPort; 00154 DtString myDescription; 00155 DtHlaVersionId myHlaVersion; 00156 00157 protected: 00158 00159 static DtFederateCreator theCreator; 00160 }; 00161 00162 inline char* DtFederate::getType() const 00163 { 00164 return myType; 00165 } 00166 00167 inline char* DtFederate::getName() const 00168 { 00169 return myName; 00170 } 00171 00172 inline bool DtFederate::isNamed() const 00173 { 00174 return myIsNamed; 00175 } 00176 00177 inline DtFederateHandle DtFederate::getHandle() const 00178 { 00179 return myHandle; 00180 } 00181 00182 inline const char* DtFederate::getDescription() const 00183 { 00184 return myDescription.c_str(); 00185 } 00186 00187 inline unsigned long DtFederate::getConnectionHandle() const 00188 { 00189 return myConnectionHandle; 00190 } 00191 00192 inline DtTime DtFederate::federateHeartbeat() const 00193 { 00194 return myHeartbeat; 00195 } 00196 00197 inline const DtSyncHashlist& DtFederate::syncPtList() const 00198 { 00199 return myHashlist; 00200 } 00201 00202 #endif //! DtFederate_H_