VR-Link API Documentation for DIS
pdu.h
Go to the documentation of this file.
1 /*********************************************************************
2 ** Copyright (c) 1992-2010 VT MAK
3 ** All rights reserved.
4 *********************************************************************/
5 #pragma once
6 
9 
10 
11 
12 #include <stdlib.h>
13 #include "packets/pduHeader.h"
14 #include <vlpi/disEnums.h>
15 #include <vlutil/vlTimeStampType.h>
16 #include <vlutil/vlBaseMsg.h>
17 
18 
19 #define DtSTATUS_OK 0
20 #define DtSTATUS_NOT_OK 1
21 
25 
29 class DT_DLL_VL DtPdu : public DtBaseMsg
30 {
31 public:
32 
34  virtual ~DtPdu();
35 
37  DtPdu(const DtPdu &pdu,
39 
41  DtPdu &operator=(const DtPdu &pdu);
42 
45  virtual void* packet() const;
46 
49  virtual int status() const;
50 
52  virtual void setVersion(int vers);
53  virtual int protocolVersion() const;
54 
56  virtual void setExerciseId(int id);
57  virtual int exerciseId() const;
58 
60  virtual DtPduKind kind() const;
61 
63  virtual DtProtocolFamily protocolFamily() const;
64 
68  virtual void setTimeStamp(DtTime time,
70 
73  virtual DtTime timeStamp() const;
74 
76  virtual DtTimeStampType timeStampType() const;
77 
82  virtual DtTime guessTimeValid(DtTime referenceTime) const;
83 
85  virtual DtNetPduHeader* netHeader() const;
86 
88  virtual void print() const;
89 
92  virtual void printToStream(std::ostream& stream) const;
93 
95  virtual void printHeader() const;
96 
98  virtual void printHeaderToStream(std::ostream& stream) const;
99 
100 
106  virtual void printData() const;
107  virtual void printDataToStream(std::ostream& stream) const;
108  virtual void printDataToString(DtString& str) const;
109 
110 protected:
111 
114  DtPdu();
115 
117  virtual void setStatus(int okStatus);
118 
121  virtual void initPdu(int size, DtBufferPtr buffer);
122 
124  virtual void initPdu(const void* initial, DtBufferPtr buffer);
125 
127  virtual DtPduKind internalGetPduKind() const = 0;
128 
130  virtual DtProtocolFamily kindToFamily(DtPduKind kind) const;
131 
133  virtual void sizeChanged(int size);
134 
136  virtual void clearData();
137 
139  virtual void initHeader(DtPduKind kind, int size);
140 
141 protected:
142 
144 };
145 
146 #define netPdu packet()
147 
149 {
150  return (DtNetPduHeader*) netRep();
151 }
152 
153 inline void* DtPdu::packet() const
154 {
155  return (void*) netRep();
156 }
157 
158 inline int DtPdu::protocolVersion() const
159 {
160  return netHeader()->version;
161 }
162 
163 inline int DtPdu::exerciseId() const
164 {
165  return netHeader()->DtExercise;
166 }
167 
168 inline DtPduKind DtPdu::kind() const
169 { return DtPduKind(netHeader()->DtKind);
170 }
171 
173 {
174  return DtProtocolFamily(netHeader()->family);
175 }
176 
177 inline DtTime DtPdu::timeStamp() const
178 {
179  return netHeader()->DtTime.time();
180 }
181 
183 {
184  return netHeader()->DtTime.type();
185 }
186 
187 inline void DtPdu::setExerciseId(int id)
188 {
189  netHeader()->DtExercise = id;
190 }
191 
192 inline void DtPdu::setTimeStamp(DtTime time, DtTimeStampType relOrAbs)
193 {
194  netHeader()->DtTime = DtNetTimeStamp(time, relOrAbs);
195 }
196 
197 inline int DtPdu::status() const
198 {
199  return myOKStatus;
200 }
201 
202 inline void DtPdu::setStatus(int okStatus)
203 {
204  myOKStatus = okStatus;
205 }
206 
207 inline void DtPdu::setVersion(int vers)
208 {
209  netHeader()->version = (unsigned char) (DtU32) vers;
210 }
211 
212 
213 
214 

Document ID: Generated on Wed Aug 14 15:35:11 EDT 2013 from SVN revision 130445
Copyright © 2005-2013 VT MÄK. All Rights Reserved (www.mak.com)