VR-Link API Documentation for HLA Evolved
pdu.h
Go to the documentation of this file.
00001 /*********************************************************************
00002 ** Copyright (c) 1992-2010 VT MAK
00003 ** All rights reserved.
00004 *********************************************************************/
00005 #pragma once
00006 
00009 
00010 
00011 
00012 #include <stdlib.h>
00013 #include "packets/pduHeader.h"
00014 #include <vlpi/disEnums.h>
00015 #include <vlutil/vlTimeStampType.h>
00016 #include <vlutil/vlBaseMsg.h>
00017 
00018 
00019 #define DtSTATUS_OK     0
00020 #define DtSTATUS_NOT_OK 1 
00021 
00022 extern DT_DLL_VL int DtProtocolVersionToSend;
00023 extern DT_DLL_VL int DtProtocolVersionToRecvMin;
00024 extern DT_DLL_VL int DtProtocolVersionToRecvMax;
00025 
00029 class DT_DLL_VL DtPdu : public DtBaseMsg
00030 {
00031 public:
00032 
00034    virtual ~DtPdu();
00035 
00037    DtPdu(const DtPdu &pdu, 
00038       DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER);
00039 
00041    DtPdu &operator=(const DtPdu &pdu);
00042 
00045    virtual void* packet() const; 
00046    
00049    virtual int status() const;
00050 
00052    virtual void setVersion(int vers);
00053    virtual int protocolVersion() const;
00054  
00056    virtual void setExerciseId(int id);
00057    virtual int exerciseId() const;
00058 
00060    virtual DtPduKind kind() const;
00061 
00063    virtual DtProtocolFamily protocolFamily() const;
00064    
00068    virtual void setTimeStamp(DtTime time, 
00069       DtTimeStampType type = DtTimeStampRelative);
00070    
00073    virtual DtTime timeStamp() const;    
00074 
00076    virtual DtTimeStampType timeStampType() const;
00077 
00082    virtual DtTime guessTimeValid(DtTime referenceTime) const;
00083 
00085    virtual DtNetPduHeader* netHeader() const;
00086 
00088    virtual void print() const; 
00089 
00092    virtual void printToStream(std::ostream& stream) const;
00093 
00095    virtual void printHeader() const;
00096 
00098    virtual void printHeaderToStream(std::ostream& stream) const;
00099 
00100    
00106    virtual void printData() const;
00107    virtual void printDataToStream(std::ostream& stream) const;
00108    virtual void printDataToString(DtString& str) const;
00109 
00110 protected:
00111 
00114    DtPdu();
00115 
00117    virtual void setStatus(int okStatus);  
00118 
00121    virtual void initPdu(int size, DtBufferPtr buffer);
00122 
00124    virtual void initPdu(const void* initial, DtBufferPtr buffer);
00125 
00127    virtual DtPduKind internalGetPduKind() const = 0;
00128 
00130    virtual DtProtocolFamily kindToFamily(DtPduKind kind) const;
00131 
00133    virtual void sizeChanged(int size);
00134 
00136    virtual void clearData();
00137 
00139    virtual void initHeader(DtPduKind kind, int size);
00140 
00141 protected:
00142 
00143    int myOKStatus;
00144 };
00145 
00146 #define netPdu packet()
00147 
00148 inline DtNetPduHeader* DtPdu::netHeader() const
00149 {
00150    return (DtNetPduHeader*) netRep();
00151 }
00152  
00153 inline void* DtPdu::packet() const
00154 {
00155    return (void*) netRep();
00156 }
00157 
00158 inline int DtPdu::protocolVersion() const 
00159 {
00160    return netHeader()->version;
00161 }
00162 
00163 inline int DtPdu::exerciseId() const 
00164 {
00165    return netHeader()->DtExercise;
00166 }
00167 
00168 inline DtPduKind DtPdu::kind() const 
00169 {   return DtPduKind(netHeader()->DtKind);
00170 }
00171 
00172 inline DtProtocolFamily DtPdu::protocolFamily() const 
00173 {
00174    return DtProtocolFamily(netHeader()->family);
00175 }
00176 
00177 inline DtTime DtPdu::timeStamp() const
00178 {
00179    return netHeader()->DtTime.time();
00180 }
00181 
00182 inline DtTimeStampType DtPdu::timeStampType() const
00183 {  
00184    return netHeader()->DtTime.type();
00185 }
00186 
00187 inline void DtPdu::setExerciseId(int id)
00188 {
00189    netHeader()->DtExercise = id;
00190 }
00191 
00192 inline void DtPdu::setTimeStamp(DtTime time, DtTimeStampType relOrAbs)
00193 {
00194    netHeader()->DtTime = DtNetTimeStamp(time, relOrAbs);
00195 }
00196 
00197 inline int DtPdu::status() const
00198 {
00199    return myOKStatus;
00200 }
00201 
00202 inline void DtPdu::setStatus(int okStatus)
00203 {
00204    myOKStatus = okStatus;
00205 }     
00206 
00207 inline void DtPdu::setVersion(int vers)
00208 {
00209    netHeader()->version = (unsigned char) (DtU32) vers;
00210 }
00211 
00212 
00213  
00214 

Document ID: Generated on Mon May 14 08:06:18 EDT 2012 from SVN revision 114750
Copyright © 2005-2012 VT MÄK Inc. All Rights Reserved (www.mak.com)