MAK RTIspy API Documentation for HLA 1516
federate.h
Go to the documentation of this file.
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_

Document ID: Generated on Thu Jun 14 14:15:04 EDT 2012 from SVN revision 116116
Copyright © 2005-2012 VT MÄK Inc. All Rights Reserved (www.mak.com)