baseFomDesc13.h
Go to the documentation of this file.
00001 /******************************************************************************
00002 ** Copyright (c) 1992-2010 VT MAK
00003 ** All rights reserved.
00004 ******************************************************************************/
00005 
00008 
00009 #ifndef baseFomDesc13_H_
00010 #define baseFomDesc13_H_
00011 
00012 #if DtHLA & !DtHLA_1516
00013 
00014 #include "lgrSim.h"
00015 #include "lgrDynStrings.h"
00016 #include "lgrHlaAttribute.h"
00017 #include "multiKeyMap.h"
00018 #include "lgrVariableLengthData.h"
00019 #include "virtualConstructor.h"
00020 #include "lgrSimDriver.h"
00021 
00022 #include "leTypes.h"
00023 #include <vector>
00024 
00025 class DtFom;
00026 
00027 namespace MAKLogger
00028 {
00029    struct DtGenFomDesc
00030    {
00031       DtLeInt32 size;
00032       DtLeInt32 numObjClasses;
00033       DtLeInt32 bufObjClassesSz;
00034       DtLeInt32 numIntClasses;
00035       DtLeInt32 bufIntClassesSz;
00036    };
00037    const size_t DtGenFomDescSz = sizeof( DtGenFomDesc );
00038 
00039    struct DtGenObjDesc
00040    {
00041       DtLeInt32 size;
00042       DtLeU32 handle;
00043       DtLeU32 flags;
00044       DtLeInt32 ownNameOff;
00045       DtLeInt32 baseNameOff;
00046       DtLeInt32 numAttrs;
00047       DtLeInt32 attrsOff;
00048    };
00049    const size_t DtGenObjDescSz = sizeof( DtGenObjDesc );
00050 
00051 
00052    struct DtGenAttrDesc
00053    {
00054       DtLeU32 handle;
00055       DtLeU32 flags;
00056       DtLeInt32  size;
00057       char  name[4];
00058    };
00059    const size_t DtGenAttrDescSz = sizeof( DtGenAttrDesc ) - 4;
00060 
00061 
00062    struct DtSubscriptionMap
00063    {
00064       int size;
00065       int objSubsOnNum;
00066       int objSubsOnPos;
00067       int objSubsOffNum;
00068       int objSubsOffPos;
00069       int intSubsOnNum;
00070       int intSubsOnPos;
00071       int intSubsOffNum;
00072       int intSubsOffPos;
00073    };
00074    const size_t DtSubscriptionMapSz = sizeof( DtSubscriptionMap );
00075 
00076    class DtLgrFom;
00077    class DtBaseObjClassDesc;
00078    class DtBaseInterClassDesc;
00079 
00087    class DT_DLL_LGRSIM DtBaseFomDesc
00088    {
00089    public:
00090 
00092       DT_VIRTUAL_CTR(DtBaseFomDesc,())
00093 
00094          
00095          DT_VIRTUAL_COPY_ASSIGN(DtBaseFomDesc)
00096 
00097          virtual ~DtBaseFomDesc();
00098 
00099    public:
00100 
00101       virtual DtBaseObjClassDesc* addObjectClass(const DtBaseObjClassDesc&);
00102       virtual DtBaseInterClassDesc* addInteractionClass(const DtBaseInterClassDesc&);
00103 
00104 
00106       virtual int readFromFile( FILE* fp );
00107       virtual int readFromFile64( int fd );
00108 
00110       virtual int writeToFile( FILE* fp ) const;
00111       virtual int writeToFile64( int fd ) const;
00112 
00114       virtual int setFromSerialForm( const void* p );
00115 
00117       virtual char* serialize( int* pSize = 0 ) const;
00118 
00119       typedef std::vector<DtBaseObjClassDesc*>::iterator objectIterator;
00120       typedef std::vector<DtBaseObjClassDesc*>::const_iterator const_objectIterator;
00121 
00122       typedef std::vector<DtBaseInterClassDesc*>::iterator interactionIterator;
00123       typedef std::vector<DtBaseInterClassDesc*>::const_iterator const_interactionIterator;
00124 
00125 
00127 
00128       objectIterator obj_begin();
00129       const_objectIterator obj_begin() const;
00131 
00133 
00134       objectIterator obj_end();
00135       const_objectIterator obj_end() const;
00137 
00139 
00140       interactionIterator inter_begin();
00141       const_interactionIterator inter_begin() const;
00143 
00145 
00146       interactionIterator inter_end();
00147       const_interactionIterator inter_end() const;
00149 
00151 
00152       virtual DtBaseObjClassDesc* objDesc( unsigned int hand );
00153       virtual const DtBaseObjClassDesc* objDesc( unsigned int hand ) const;
00155 
00157 
00158       virtual DtBaseObjClassDesc* objDesc( const DtString& _name );
00159       virtual const DtBaseObjClassDesc* objDesc( const DtString& _name ) const;
00161 
00163 
00164       virtual DtBaseInterClassDesc* interDesc( unsigned int hand );
00165       virtual const DtBaseInterClassDesc* interDesc( unsigned int hand ) const;
00167 
00169 
00170       virtual DtBaseInterClassDesc* interDesc( const DtString& _name );
00171       virtual const DtBaseInterClassDesc* interDesc( const DtString& _name ) const;
00173 
00175       inline int objectClassCount() const;
00176 
00178       inline int interactionClassCount() const;
00179 
00181       inline int count() const;
00182 
00185       virtual bool equivalent( const DtBaseFomDesc& other) const;
00186 
00189       virtual bool identical( const DtBaseFomDesc& other) const;
00190 
00192       virtual void setFilterByClass( const DtSubscriptionMap* map );
00193 
00195       virtual void setFilterAllObjectClasses();
00196 
00198       virtual void setFilterNoObjectClasses();
00199 
00201       virtual void setFilterAllInteractionClasses();
00202 
00204       virtual void setFilterNoInteractionClasses();
00205 
00207       virtual void empty();
00208 
00211       virtual void setObjectClassHeartbeatTime(const DtString& className, double time, bool includeSubclasses = false);
00212 
00216       virtual double objectClassHeartbeatTime(const DtString& className, bool* isSet=0) const;
00217 
00220       virtual bool objectClassHeartbeatInheritable(const DtString& className) const;
00221 
00224       virtual void setObjectClassTimeoutTime(const DtString& className, double time, bool includeSubclasses = false);
00225 
00229       virtual double objectClassTimeoutTime(const DtString& className, bool* isSet=0) const;
00230 
00233       virtual bool objectClassTimeoutInheritable(const DtString& className) const;
00234 
00236 
00237 
00238 
00239 
00240       virtual void initObjClasses();
00241       virtual void initIntClasses();
00243 
00244    protected:
00245 
00247       bool processCommand(const char*command,char* tkn,const char* sep);
00248 
00250       virtual void deleteObjClasses();
00251 
00253       virtual void deleteIntClasses();
00254 
00256       void resetAll();
00257 
00259       void initFromSource( const DtBaseFomDesc& src );
00260 
00262       int  unserialize( const char* bfr );
00263 
00264    protected:
00265 
00266       DtDynamicBuffer myDynBuf;
00267 
00268       typedef DtMultiKeyMap<DtString,DtLgrHlaHandle,DtBaseObjClassDesc*> ObjectMap;
00269       typedef DtMultiKeyMap<DtString,DtLgrHlaHandle,DtBaseInterClassDesc*> InteractionMap;
00270 
00271       ObjectMap myObjectLookupMap;
00272       InteractionMap myInteractionLookupMap;
00273 
00274       std::vector<DtBaseObjClassDesc*> myObjectClasses;
00275       std::vector<DtBaseInterClassDesc*> myInteractionClasses;
00276       std::map<DtString, DtLgrSimDriver::HeartbeatTimeRecord> myHeartbeatTimes;
00277       std::map<DtString, DtLgrSimDriver::HeartbeatTimeRecord> myTimeoutTimes;
00278 
00279    protected:
00280       static int theHashSize;
00281    };
00282 
00283 
00284    inline int DtBaseFomDesc::objectClassCount() const
00285    {
00286       return (int)myObjectClasses.size();
00287    }
00288 
00289    inline int DtBaseFomDesc::interactionClassCount() const
00290    {
00291       return (int)myInteractionClasses.size();
00292    }
00293 
00294 
00295    inline int DtBaseFomDesc::count() const
00296    {
00297       return ( objectClassCount() + interactionClassCount() );
00298    }
00299 
00300 }
00301 
00302 #endif   //! DtHLA & !DtHLA_1516
00303 #endif

Document ID: Generated on Tue Oct 11 19:41:03 EDT 2011 from SVN revision 107422
Copyright © 2005-2011 VT MÄK Inc. All Rights Reserved (www.mak.com)