MAK RTIspy API Documentation for HLA Evolved
rtiMsg.h
Go to the documentation of this file.
00001 /*********************************************************************
00002 ** Copyright (c) 1998 MaK Technologies, Inc.
00003 ** All rights reserved.
00004 *********************************************************************/
00005 /*********************************************************************
00006 ** $RCSfile: rtiMsg.h,v $ $Revision: 1.109 $ $State: Exp $
00007 *********************************************************************/
00008 
00011 
00012 #ifndef DtRtiMsg_H_
00013 #define DtRtiMsg_H_
00014 
00015 #include <memory>
00016 #include "netRtiMsgHdr.h"
00017 #include <vlutil/vlBaseMsg.h>
00018 #include "internalTypes.h"
00019 #include <vlutil/vlString.h>
00020 
00021 #if defined(DtIFSPEC1516) || defined(DtIFSPEC1516E)
00022 #include <RTI/Handle.h>
00023 #include <RTI/Typedefs.h>
00024 #include <RTI/LogicalTime.h>
00025 #include <RTI/LogicalTimeInterval.h>
00026 #else
00027 #ifdef DtIFSPEC13DLC
00028 #include "RTI13.h"
00029 #define RTI rti13
00030 #else
00031 #include "RTI.hh"
00032 #endif
00033 #endif
00034 
00035 #include "bitMask.h"
00036 
00037 class DtLogicalTimeFactory;
00038 
00039 #define MSG_STATUS_OK     0
00040 #define MSG_STATUS_NOT_OK 1 
00041 
00042 enum DtRtiMsgKind
00043 {
00044    DtInteractionRoMsgKind                 = 0,
00045    DtUpdateRoMsgKind                      = 1,
00046    DtDeleteRoMsgKind                      = 2,
00047    DtCreateMsgKind                        = 3,
00048    DtCreateResponseMsgKind                = 4,
00049    DtJoinMsgKind                          = 5,
00050    DtJoinResponseMsgKind                  = 6,
00051    DtResignMsgKind                        = 7,
00052    DtDestroyMsgKind                       = 8,
00053    DtDestroyResponseMsgKind               = 9,
00054    DtPubInterMsgKind                      = 10,
00055    DtUnpubInterMsgKind                    = 11,
00056    DtSubInterMsgKind                      = 12,
00057    DtUnsubInterMsgKind                    = 13,
00058    DtSubObjMsgKind                        = 14,
00059    DtUnsubObjMsgKind                      = 15,
00060    DtPubObjMsgKind                        = 16,
00061    DtUnpubObjMsgKind                      = 17,
00062    DtRequestMsgKind                       = 18,
00063    DtSyncPointMsgKind                     = 19,
00064    DtOwnershipMsgKind                     = 20,
00065    DtRegObjMsgKind                        = 21,
00066    DtLocDelMsgKind                        = 22,
00067    DtDdmInteractionRoMsgKind              = 23,
00068    DtDdmUpdateRoMsgKind                   = 24,
00069    DtNotifyRegMsgKind                     = 25,
00070    DtDeleteRegMsgKind                     = 26,
00071    DtAssocPubRegMsgKind                   = 27,
00072    DtAssocSubRegMsgKind                   = 28,
00073    DtObjRegSetMsgKind                     = 29,
00074    DtInterRegSetMsgKind                   = 30,
00075    DtJoinConfirmMsgKind                   = 31,
00076    DtAliveMsgKind                         = 32,
00077    DtSaveRequestMsgKind                   = 33,
00078    DtSaveInitiateMsgKind                  = 34,
00079    DtSaveCompleteMsgKind                  = 35,
00080    DtSaveFinishedMsgKind                  = 36,
00081    DtRestoreRequestMsgKind                = 37,
00082    DtRestoreReplyMsgKind                  = 38,
00083    DtRestoreMsgKind                       = 39,
00084    DtRestoreCompleteMsgKind               = 40,
00085    DtRestoreEndMsgKind                    = 41,
00086    DtTimeRegMsgKind                       = 42,
00087    DtRegulationRequestMsgKind             = 43,
00088    DtRegulationResponseMsgKind            = 44,
00089    DtInteractionTsoMsgKind                = 45,
00090    DtUpdateTsoMsgKind                     = 46,
00091    DtDeleteTsoMsgKind                     = 47,
00092    DtDdmInteractionTsoMsgKind             = 48,
00093    DtDdmUpdateTsoMsgKind                  = 49,
00094    DtEnableRegulationMsgKind              = 50,
00095    DtRegulationEnabledMsgKind             = 51,
00096    DtEnableConstrainedMsgKind             = 52,
00097    DtConstrainedEnabledMsgKind            = 53,
00098    DtTimeAdvanceRequestMsgKind            = 54,
00099    DtNextEventRequestMsgKind              = 55,
00100    DtLbtsMsgKind                          = 56,
00101    DtNerLbtsMsgKind                       = 57,
00102    DtDisableMsgKind                       = 58,
00103    DtSyncConstrainedMsgKind               = 59,
00104    DtConstrainedSyncMsgKind               = 60,
00105    DtResumeConstrainedMsgKind             = 61,
00106    DtRetractMsgKind                       = 62,
00107    DtSaveRequestTsoMsgKind                = 63,
00108    DtSaveTimeMsgKind                      = 64,
00109    DtSaveTimeAdvanceMsgKind               = 65,
00110    DtSaveResponseMsgKind                  = 66,
00111    DtRestoreBegunMsgKind                  = 67,
00112    DtRestoreInitiateMsgKind               = 68,
00113    DtDesignatedFederateMsgKind            = 69,
00114    DtSaveBegunMsgKind                     = 70,
00115    DtDiscObjMsgKind                       = 71,
00116    DtReqDiscObjMsgKind                    = 72,
00117    DtConnectMsgKind                       = 73,
00118    DtDisconnectMsgKind                    = 74,
00119    DtFedFileRequestMsgKind                = 75,
00120    DtFedFileDistributionMsgKind           = 76,
00121    DtReserveNameMsgKind                   = 77,
00122    DtNameReservedMsgKind                  = 78,
00123    DtQuerySaveStatusMsgKind               = 79,
00124    DtSaveStatusMsgKind                    = 80,
00125    DtQueryRestoreStatusMsgKind            = 81,
00126    DtRestoreStatusMsgKind                 = 82,
00127    DtSyncPointQueryMsgKind                = 83,
00128    DtRegionRealizationMsgKind             = 84,
00129    DtRtiExecHandshakeMsgKind              = 85,
00130    DtRtiExecDisconnectMsgKind             = 86,
00131    DtRtiExecConnectMsgKind                = 87,
00132    DtForwarderPingMsgKind                 = 88,
00133    DtForwarderCounterMsgKind              = 89,   
00134    DtForwarderResignMsgKind               = 90,
00135    DtForwarderConnectionLostMsgKind       = 91,
00136    DtMulticastDiscoveryMsgKind            = 92,
00137    DtSaveInitiateConstrainedMsgKind       = 93,
00138    DtInitiatedSaveMsgKind                 = 94,
00139    DtReconnectMsgKind                     = 95,
00140    DtMcastConfigureMsgKind                = 96,
00141    DtSmEnrollmentMsgKind                  = 97,
00142    DtWwwControlMsgKind                    = 98,
00143    DtWwwControlRspMsgKind                 = 99,
00144    DtWwwFederateStateReqMsgKind           = 100,
00145    DtWwwFederateStateRspMsgKind           = 101,
00146    DtWwwStateReqMsgKind                   = 102,
00147    DtWwwStateRspMsgKind                   = 103,
00148    DtRidTestRequestMsgKind                = 104,
00149    DtTransferRidParamsMsgKind             = 105,
00150    DtNetworkMapReqMsgKind                 = 106,
00151    DtNetworkMapRspMsgKind                 = 107,   
00152    DtCallbackMsgKind                      = 108,
00153    DtFomModuleRequestMsgKind              = 109,
00154    DtFomModuleDistributionMsgKind         = 110,
00155    DtConnectConfirmMsgKind                = 111,
00156    DtEnableDisableNetworkTestingMsgKind   = 112,
00157    DtChangeLatencyTestModeMsgKind         = 113,
00158    DtLatencyReportMsgKind                 = 114,
00159    DtTestMgrStatusMsgKind                 = 115,
00160    DtDeleteSocketMsgKind                  = 116,
00161    DtJoinLightWeightMsgKind               = 117,
00162    DtPartnerFederateMsgKind               = 118,
00163    DtForwarderNodeInfoMsgKind             = 119,
00164    DtRtiExecShutdownForwarderMsgKind      = 120,
00165    DtMacAddrMsgKind                       = 121,
00166    DtQueueFullMsgKind                     = 122,
00167    DtAbortSaveMsgKind                     = 123,
00168    DtAbortRestoreMsgKind                  = 124,
00169    DtListFederationsMsgKind               = 125,
00170    DtReportFederationsMsgKind             = 126,
00171    DtQueryTransportMsgKind                = 127,
00172    DtQueryInterTransportMsgKind           = 128,
00173    DtResignDirectiveMsgKind               = 129,
00174    DtReserveMultiNameMsgKind              = 130,
00175    DtMultiNameReservedMsgKind             = 131,
00176    DtReleaseMultiNameMsgKind              = 132,
00177    DtForwarderPortMsgKind                 = 133,
00178 
00183    DtInvalidMsgKind                       = 255
00184 };
00185 
00186 
00188 class DT_DLL_LRC DtRtiMsg : public MAKRti::DtBaseMsg
00189 {
00190 public:
00191 
00193    virtual ~DtRtiMsg();
00194 
00198    virtual DtRtiMsg* clone(bool copy          = true) const         =0; 
00199 
00202    virtual DtRtiMsg* cloneWithTransport(bool copy          = true) const; 
00203 
00205    virtual DtNetMsgHeader* netHeader() const;
00206 
00208    virtual int version() const;
00209 
00211    virtual bool isValidVersion() const;
00212 
00224  
00226    virtual void setFedEx(const MAKRti::DtString& name);
00227 
00229    virtual void setFedEx(int handle);   
00230    
00234    virtual bool isForExec(const MAKRti::DtString& execName, int execHandle) const;
00235 
00239 
00240 
00241 
00242    virtual const MAKRti::DtString fedExName() const;
00245    virtual int fedExHandle() const;
00247 
00249 
00250    virtual void setFederateHandle(DtFederateHandle handle);
00251    virtual DtFederateHandle federateHandle() const;
00253 
00255 
00256    virtual void setSequenceNumber(unsigned long value);
00257    virtual unsigned long sequenceNumber() const;
00259 
00261 
00262    virtual void setServiceCallNumber(unsigned long value);
00263    virtual unsigned long serviceCallNumber() const;
00265 
00268 
00269    virtual void setTriggerMessageNumber(unsigned long value);
00270    virtual unsigned long triggerMessageNumber() const;
00272 
00274    virtual DtRtiMsgKind msgKind() const;
00275 
00277    virtual const char* kindString() const;
00278 
00280    virtual bool isConstrained() const;
00281 
00283    virtual bool isAllowedDuringSave() const;
00284 
00288 #ifdef DtIFSPEC1516
00289    virtual void setTime(const rti1516::LogicalTime& time);
00290    virtual rti1516::LogicalTime const * time(
00291       DtLogicalTimeFactory* fedTimeFactory) const;
00292 #elif defined(DtIFSPEC1516E)
00293    virtual void setTime(const rti1516e::LogicalTime& time);
00294    virtual rti1516e::LogicalTime const * time(
00295        DtLogicalTimeFactory* fedTimeFactory) const;
00296 #else
00297    virtual void setTime(const RTI::FedTime& time);
00298    virtual RTI::FedTime const * time(
00299       DtLogicalTimeFactory* fedTimeFactory) const;
00300 #endif
00301 
00303    virtual bool hasTime() const;
00304 
00308    virtual void setSerialNumber(unsigned long serialNumberValue);
00309    virtual unsigned long serialNumber() const;
00310 
00312    virtual void setTransportType(DtTransportHandle type);
00313    virtual DtTransportHandle transportType() const;
00314 
00316    virtual DtOrderHandle orderType() const;
00317 
00319    virtual bool isMetadataPresent() const;
00320 
00327    virtual bool addMetadata( caddr_t* mtdAddr, unsigned int size, 
00328                   unsigned int* alignPad, unsigned int* headerPad          = NULL );
00329 
00332    virtual void removeMetadata( unsigned int size );
00333 
00336    bool isInteractionMsgType() const;
00337    bool isUpdateMsgType() const;
00338 
00339 
00340 
00342    virtual void print(DtLogicalTimeFactory* logicalTimeFactory) const; 
00343    virtual void printHeader(DtLogicalTimeFactory* logicalTimeFactory) const;
00344    virtual void printData(DtLogicalTimeFactory* logicalTimeFactory) const;
00345 
00347 #ifdef DtIFSPEC1516
00348    virtual void printTime(const char* label,
00349       rti1516::LogicalTime const * timeValue) const;
00350 
00352    virtual void printInterval(const char* label,
00353       rti1516::LogicalTimeInterval const* intervalValue) const;
00354 #elif defined(DtIFSPEC1516E)
00355    virtual void printTime(const char* label,
00356        rti1516e::LogicalTime const * timeValue) const;
00357 
00359    virtual void printInterval(const char* label,
00360        rti1516e::LogicalTimeInterval const* intervalValue) const;
00361 #else
00362    virtual void printTime(const char* label,
00363       RTI::FedTime const * timeValue) const;
00364 
00366    virtual void printInterval(const char* label,
00367       RTI::FedTime const* intervalValue) const;
00368 #endif
00369 
00371    virtual int status() const;
00372 
00373 public:
00374 
00376    static const char* kindToString(DtRtiMsgKind kind);
00377 
00379    static const char* kindString(const void *buffer);
00380 
00382    static void setDefaultRegionSet(unsigned long defaultRegionSet);
00383 
00385    static void setUse32BitsForValueSize(bool use32BitsForValueSizeEnabled);
00386    static bool use32BitsForValueSize();
00387 
00389    static void setSmartForwardingEnabled( bool enabled );
00390    static bool smartForwardingEnabled();
00391   
00392 public:
00393    static unsigned long theDefaultRegionSetHandle;
00394 #ifdef DtIFSPEC1516
00395    static const rti1516::VariableLengthData theDefaultTag;
00396 #elif defined(DtIFSPEC1516E)
00397    static const rti1516e::VariableLengthData theDefaultTag;
00398 #else
00399    static const char* theDefaultTag;
00400 #endif
00401 
00402 protected:
00403 
00405    DtRtiMsg();
00406 
00407    virtual DtRtiMsgKind internalDtRtiMsgKind()          = 0;
00408    
00411    virtual void sizeChanged(int size);
00412 
00414    void initDtRtiMsg(int size, DtRtiMsgKind msgKindVal, DtBufferPtr buffer);
00415    void initDtRtiMsg(const void *initial, int size, DtBufferPtr buffer);
00416    void initDtRtiMsg(const DtNetMsgHeader *header, DtBufferPtr buffer);
00417 
00420    virtual void adjustBytes(int offset, int numBytes);
00421 
00425    virtual void adjustBytes(void *address, int numBytes);
00426 
00427 protected:
00428 
00429    DtTransportHandle myTransportType;
00430    DtOrderHandle myOrderType;
00431 #ifdef DtIFSPEC1516
00432    rti1516::LogicalTime* myFedTime;
00433 #elif defined(DtIFSPEC1516E)
00434    rti1516e::LogicalTime* myFedTime;
00435 #else
00436    RTI::FedTime * myFedTime;
00437 #endif
00438    bool myTimeIsValid;
00439    bool myConstrained;
00440    bool myAllowedDuringSave;   
00441    unsigned long mySerialNumber;
00442    unsigned long myServiceCallNumber;
00443    unsigned long myTriggerMessage;
00444 
00445 protected:
00446 
00447    static bool theUse32BitsForValueSize;
00448 
00449    static bool theSmartForwardingEnabled;
00450 };
00451 
00452 inline DtNetMsgHeader* DtRtiMsg::netHeader() const
00453 {
00454    return (DtNetMsgHeader*) netRep();
00455 }
00456 
00457 inline DtRtiMsgKind DtRtiMsg::msgKind() const
00458 {
00459    return DtRtiMsgKind((DtU32) (DtU8) netHeader()->msgKind);
00460 }
00461 
00462 inline int DtRtiMsg::status() const
00463 {
00464    return MSG_STATUS_OK;
00465 }
00466 
00467 inline DtFederateHandle DtRtiMsg::federateHandle() const
00468 {
00469    return (DtFederateHandle) (DtU16) netHeader()->fedHandle;
00470 }
00471 
00472 
00473 inline void DtRtiMsg::adjustBytes(int offset, int numBytes)
00474 {
00475    if (numBytes > 0)
00476       insertBytes(offset, numBytes);
00477    else
00478    if (numBytes < 0)
00479       deleteBytes(offset, -numBytes);
00480 }
00481 
00482 inline void DtRtiMsg::adjustBytes(void *address, int numBytes)
00483 {
00484    if (numBytes > 0)
00485       insertBytes(address, numBytes);
00486    else
00487    if (numBytes < 0)
00488       deleteBytes(address, -numBytes);
00489 }
00490 
00491 #endif
00492 

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)