WebLVC 1.8 API Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
pMessage.h
Go to the documentation of this file.
1 /****************************************************************************
2  * Copyright (c) 2017 MAK Technologies, Inc.
3  * All rights reserved.
4  ****************************************************************************/
5 
9 
10 #pragma once
11 
12 #include <portal/dllExport.h>
13 #include <portal/pMessageKinds.h>
15 #include <portal/aggregateTypes.h>
16 #include <portal/amountRecord.h>
19 #include <portal/emitterBeamData.h>
20 #include <portal/ewAttackRecord.h>
22 #include <portal/fixedLengthData.h>
32 #include <portal/shaftRateData.h>
36 #include <portal/typedRateRecord.h>
38 
40 #include <vlpi/syntheticEnvironmentObjectType.h>
41 #include <vlpi/articulatedPartCollection.h>
42 #include <vlpi/attachedPartCollection.h>
43 #include <vlpi/entityIdentifier.h>
44 #include <vlpi/entityType.h>
45 #include <vlpi/patchIdentifier.h>
46 
47 #include <matrix/vlTaitBryan.h>
48 #include <matrix/vlVector.h>
49 
50 #include <vlutil/vlNetTypes.h>
51 #include <vlutil/vlString.h>
52 #include <vlutil/vlTime.h>
53 
54 #include <iosfwd>
55 #include <vector>
56 #include <map>
57 
58 namespace MAKVrExchange
59 {
60 
67  {
68  public:
69 
72 
74  DtPortalMessage( const DtPortalMessage& other );
75 
77  virtual ~DtPortalMessage();
78 
80  virtual DtPortalMessage& operator = ( const DtPortalMessage& other );
81 
84 
85  virtual bool operator == ( const DtPortalMessage& other ) const;
86  virtual bool operator != ( const DtPortalMessage& other ) const;
87 
89 
92 
95  DtDEC_ATTRIBUTE( DtPortalMessageKind, Kind, kind );
96 
98 
100  public:
101 
104 
107  virtual void setSerialNumber( unsigned int i ) const;
108 
115  virtual unsigned int serialNumber() const;
116 
119  virtual void setSendingBrokerId( const DtU32& id ) const;
120 
124  virtual DtU32 sendingBrokerId() const;
125 
128  virtual void setTimeSent( const DtTime& tm ) const;
129 
133  virtual DtTime timeSent() const;
134 
137  virtual void setTimeReceived( const DtTime& tm ) const;
138 
143  virtual DtTime timeReceived() const;
144 
146 
147  public:
148 
152  virtual unsigned int netSize() const;
153 
157  virtual void writeSelfToBuffer( void* buffer, int bufferSize ) const;
158 
162  virtual void readSelfFromBuffer( const void* buffer, int bufferSize );
163 
166  virtual std::ostream& printDataToStream( std::ostream& str ) const;
167 
168  protected:
169 
172 
173  virtual int getSize( const DtU8& v ) const;
174  virtual char* encode( const DtU8& val, char* buffer, int& bufferSize ) const;
175  virtual const char* decode( DtU8& val, const char* buffer, int& bufferSize ) const;
176 
177  virtual int getSize( const DtU16& v ) const;
178  virtual char* encode( const DtU16& val, char* buffer, int& bufferSize ) const;
179  virtual const char* decode( DtU16& val, const char* buffer, int& bufferSize ) const;
180 
181  virtual int getSize( const DtU32& v ) const;
182  virtual char* encode( const DtU32& val, char* buffer, int& bufferSize ) const;
183  virtual const char* decode( DtU32& val, const char* buffer, int& bufferSize ) const;
184 
185  virtual int getSize( const DtU64& v ) const;
186  virtual char* encode( const DtU64& val, char* buffer, int& bufferSize ) const;
187  virtual const char* decode( DtU64& val, const char* buffer, int& bufferSize ) const;
188 
189  virtual int getSize( const DtInt8& v ) const;
190  virtual char* encode( const DtInt8& val, char* buffer, int& bufferSize ) const;
191  virtual const char* decode( DtInt8& val, const char* buffer, int& bufferSize ) const;
192 
193  virtual int getSize( const DtInt16& v ) const;
194  virtual char* encode( const DtInt16& val, char* buffer, int& bufferSize ) const;
195  virtual const char* decode( DtInt16& val, const char* buffer, int& bufferSize ) const;
196 
197  virtual int getSize( const DtInt32& v ) const;
198  virtual char* encode( const DtInt32& val, char* buffer, int& bufferSize ) const;
199  virtual const char* decode( DtInt32& val, const char* buffer, int& bufferSize ) const;
200 
201  virtual int getSize( const DtInt64& v ) const;
202  virtual char* encode( const DtInt64& val, char* buffer, int& bufferSize ) const;
203  virtual const char* decode( DtInt64& val, const char* buffer, int& bufferSize ) const;
204 
205  virtual int getSize( const DtFloat32& v ) const;
206  virtual char* encode( const DtFloat32& val, char* buffer, int& bufferSize ) const;
207  virtual const char* decode( DtFloat32& val, const char* buffer, int& bufferSize ) const;
208 
209  virtual int getSize( const DtFloat64& v ) const;
210  virtual char* encode( const DtFloat64& val, char* buffer, int& bufferSize ) const;
211  virtual const char* decode( DtFloat64& val, const char* buffer, int& bufferSize ) const;
212 
213  virtual int getSize( const DtVector32& v ) const;
214  virtual char* encode( const DtVector32& val, char* buffer, int& bufferSize ) const;
215  virtual const char* decode( DtVector32& val, const char* buffer, int& bufferSize ) const;
216 
217  virtual int getSize( const DtVector64& v ) const;
218  virtual char* encode( const DtVector64& val, char* buffer, int& bufferSize ) const;
219  virtual const char* decode( DtVector64& val, const char* buffer, int& bufferSize ) const;
220 
221  virtual int getSize( const DtTaitBryan& v ) const;
222  virtual char* encode( const DtTaitBryan& val, char* buffer, int& bufferSize ) const;
223  virtual const char* decode( DtTaitBryan& val, const char* buffer, int& bufferSize ) const;
224 
225  virtual int getSize( const DtString& val ) const;
226  virtual char* encode( const DtString& val, char* buffer, int& bufferSize ) const;
227  virtual const char* decode( DtString& val, const char* buffer, int& bufferSize ) const;
228 
229  virtual int getSize( const bool& v ) const;
230  virtual char* encode( const bool& val, char* buffer, int& bufferSize ) const;
231  virtual const char* decode( bool& val, const char* buffer, int& bufferSize ) const;
232 
234 
237 
238  virtual int getSize( const DtSilentEntity& v ) const;
239  virtual char* encode( const DtSilentEntity& val, char* buffer, int& bufferSize ) const;
240  virtual const char* decode( DtSilentEntity& val, const char* buffer, int& bufferSize ) const;
241 
242  virtual int getSize( const DtSilentAggregate& v ) const;
243  virtual char* encode( const DtSilentAggregate& val, char* buffer, int& bufferSize ) const;
244  virtual const char* decode( DtSilentAggregate& val, const char* buffer, int& bufferSize ) const;
245 
246  virtual int getSize( const DtVariableLengthData& v ) const;
247  virtual char* encode( const DtVariableLengthData& val, char* buffer, int& bufferSize ) const;
248  virtual const char* decode( DtVariableLengthData& val, const char* buffer, int& bufferSize ) const;
249 
250  virtual int getSize( const DtFixedLengthData& value ) const;
251  virtual char* encode( const DtFixedLengthData& value, char* buffer, int& bufferSize ) const;
252  virtual const char* decode( DtFixedLengthData& value, const char* buffer, int& bufferSize ) const;
253 
254  virtual int getSize( const DtAggregateVariableDatum& v ) const;
255  virtual char* encode( const DtAggregateVariableDatum& val, char* buffer, int& bufferSize ) const;
256  virtual const char* decode( DtAggregateVariableDatum& val, const char* buffer, int& bufferSize ) const;
257 
258  virtual int getSize( const DtEmitterBeamData& data ) const;
259  virtual char* encode( const DtEmitterBeamData& data, char* buffer, int& bufferSize ) const;
260  virtual const char* decode( DtEmitterBeamData& data, const char* buffer, int& bufferSize ) const;
261 
262  virtual int getSize( const DtLinearSegmentData& data ) const;
263  virtual char* encode( const DtLinearSegmentData& data, char* buffer, int& bufferSize ) const;
264  virtual const char* decode( DtLinearSegmentData& data, const char* buffer, int& bufferSize ) const;
265 
266  virtual int getSize( const DtActiveSonarBeamData& data ) const;
267  virtual char* encode( const DtActiveSonarBeamData& data, char* buffer, int& bufferSize ) const;
268  virtual const char* decode( DtActiveSonarBeamData& data, const char* buffer, int& bufferSize ) const;
269 
270  virtual int getSize( const DtEntityIdentifier& value ) const;
271  virtual char* encode( const DtEntityIdentifier& value, char* buffer, int& bufferSize ) const;
272  virtual const char* decode( DtEntityIdentifier& value, const char* buffer, int& bufferSize ) const;
273 
274  virtual int getSize( const DtEntityType& value ) const;
275  virtual char* encode( const DtEntityType& value, char* buffer, int& bufferSize ) const;
276  virtual const char* decode( DtEntityType& value, const char* buffer, int& bufferSize ) const;
277 
278  virtual int getSize( const DtSyntheticEnvironmentObjectType& value ) const;
279  virtual char* encode( const DtSyntheticEnvironmentObjectType& value, char* buffer, int& bufferSize ) const;
280  virtual const char* decode( DtSyntheticEnvironmentObjectType& value, const char* buffer, int& bufferSize ) const;
281 
282  virtual int getSize( const DtArticulatedPartCollection& value ) const;
283  virtual char* encode( const DtArticulatedPartCollection& value, char* buffer, int& bufferSize ) const;
284  virtual const char* decode( DtArticulatedPartCollection& value, const char* buffer, int& bufferSize ) const;
285 
286  virtual int getSize( const DtAttachedPartCollection& value ) const;
287  virtual char* encode( const DtAttachedPartCollection& value, char* buffer, int& bufferSize ) const;
288  virtual const char* decode( DtAttachedPartCollection& value, const char* buffer, int& bufferSize ) const;
289 
290  virtual int getSize( const DtIffAtcNavaidsAltParm4& value ) const;
291  virtual char* encode( const DtIffAtcNavaidsAltParm4& value, char* buffer, int& bufferSize ) const;
292  virtual const char* decode( DtIffAtcNavaidsAltParm4& value, const char* buffer, int& bufferSize ) const;
293 
294  virtual int getSize( const DtSimulationAddress& value ) const;
295  virtual char* encode( const DtSimulationAddress& value, char* buffer, int& bufferSize ) const;
296  virtual const char* decode( DtSimulationAddress& value, const char* buffer, int& bufferSize ) const;
297 
298  virtual int getSize( const DtShaftRateData& value ) const;
299  virtual char* encode( const DtShaftRateData& value, char* buffer, int& bufferSize ) const;
300  virtual const char* decode( DtShaftRateData& value, const char* buffer, int& bufferSize ) const;
301 
302  virtual int getSize( const DtRingSectorsRecord& value ) const;
303  virtual char* encode( const DtRingSectorsRecord& value, char* buffer, int& bufferSize ) const;
304  virtual const char* decode( DtRingSectorsRecord& value, const char* buffer, int& bufferSize ) const;
305 
306  virtual int getSize( const DtPostureTransitionRecord& value ) const;
307  virtual char* encode( const DtPostureTransitionRecord& value, char* buffer, int& bufferSize ) const;
308  virtual const char* decode( DtPostureTransitionRecord& value, const char* buffer, int& bufferSize ) const;
309 
310  virtual int getSize( const DtMoppLevelTransitionRecord& value ) const;
311  virtual char* encode( const DtMoppLevelTransitionRecord& value, char* buffer, int& bufferSize ) const;
312  virtual const char* decode( DtMoppLevelTransitionRecord& value, const char* buffer, int& bufferSize ) const;
313 
314  virtual int getSize( const DtIndirectFirePowerRecord& value ) const;
315  virtual char* encode( const DtIndirectFirePowerRecord& value, char* buffer, int& bufferSize ) const;
316  virtual const char* decode( DtIndirectFirePowerRecord& value, const char* buffer, int& bufferSize ) const;
317 
318  virtual int getSize( const DtRangedPowerRecord& value ) const;
319  virtual char* encode( const DtRangedPowerRecord& value, char* buffer, int& bufferSize ) const;
320  virtual const char* decode( DtRangedPowerRecord& value, const char* buffer, int& bufferSize ) const;
321 
322  virtual int getSize( const DtEffectModifierRecord& value ) const;
323  virtual char* encode( const DtEffectModifierRecord& value, char* buffer, int& bufferSize ) const;
324  virtual const char* decode( DtEffectModifierRecord& value, const char* buffer, int& bufferSize ) const;
325 
326  virtual int getSize( const DtTypedQuantityRecord& value ) const;
327  virtual char* encode( const DtTypedQuantityRecord& value, char* buffer, int& bufferSize ) const;
328  virtual const char* decode( DtTypedQuantityRecord& value, const char* buffer, int& bufferSize ) const;
329 
330  virtual int getSize( const DtCasualtyReportRecord& value ) const;
331  virtual char* encode( const DtCasualtyReportRecord& value, char* buffer, int& bufferSize ) const;
332  virtual const char* decode( DtCasualtyReportRecord& value, const char* buffer, int& bufferSize ) const;
333 
334  virtual int getSize( const DtTypedAmountRecord& value ) const;
335  virtual char* encode( const DtTypedAmountRecord& value, char* buffer, int& bufferSize ) const;
336  virtual const char* decode( DtTypedAmountRecord& value, const char* buffer, int& bufferSize ) const;
337 
338  virtual int getSize( const DtEWAttackRecord& value ) const;
339  virtual char* encode( const DtEWAttackRecord& value, char* buffer, int& bufferSize ) const;
340  virtual const char* decode( DtEWAttackRecord& value, const char* buffer, int& bufferSize ) const;
341 
342  virtual int getSize( const DtEWAttackDefendingRecord& value ) const;
343  virtual char* encode( const DtEWAttackDefendingRecord& value, char* buffer, int& bufferSize ) const;
344  virtual const char* decode( DtEWAttackDefendingRecord& value, const char* buffer, int& bufferSize ) const;
345 
346  virtual int getSize( const DtTypedRateRecord& value ) const;
347  virtual char* encode( const DtTypedRateRecord& value, char* buffer, int& bufferSize ) const;
348  virtual const char* decode( DtTypedRateRecord& value, const char* buffer, int& bufferSize ) const;
349 
350  virtual int getSize( const DtAmountRecord& value ) const;
351  virtual char* encode( const DtAmountRecord& value, char* buffer, int& bufferSize ) const;
352  virtual const char* decode( DtAmountRecord& value, const char* buffer, int& bufferSize ) const;
353 
354  virtual int getSize( const DtSensorContactInfo& value ) const;
355  virtual char* encode( const DtSensorContactInfo& value, char* buffer, int& bufferSize ) const;
356  virtual const char* decode( DtSensorContactInfo& value, const char* buffer, int& bufferSize ) const;
357 
358  virtual int getSize( const DtPropulsionSystemData& value ) const;
359  virtual char* encode( const DtPropulsionSystemData& value, char* buffer, int& bufferSize ) const;
360  virtual const char* decode( DtPropulsionSystemData& value, const char* buffer, int& bufferSize ) const;
361 
362  virtual int getSize( const DtNozzleSystemData& value ) const;
363  virtual char* encode( const DtNozzleSystemData& value, char* buffer, int& bufferSize ) const;
364  virtual const char* decode( DtNozzleSystemData& value, const char* buffer, int& bufferSize ) const;
365 
366  virtual int getSize( const DtVrxRecordSetList& value ) const;
367  virtual char* encode( const DtVrxRecordSetList& value, char* buffer, int& bufferSize ) const;
368  virtual const char* decode( DtVrxRecordSetList& value, const char* buffer, int& bufferSize ) const;
369 
370  virtual int getSize( const DtPatchIdentifier& value ) const;
371  virtual char* encode( const DtPatchIdentifier& value, char* buffer, int& bufferSize ) const;
372  virtual const char* decode( DtPatchIdentifier& value, const char* buffer, int& bufferSize ) const;
373 
375 
378 
379  template <typename T1, typename T2>
380  int getSize( const std::pair<T1,T2>& value ) const;
381 
382  template <typename T1, typename T2>
383  char* encode( const std::pair<T1,T2>& value, char* buffer, int& bufferSize ) const;
384 
385  template <typename T1, typename T2>
386  const char* decode( std::pair<T1,T2>& value, const char* buffer, int& bufferSize ) const;
387 
389 
392 
393  template <typename T>
394  int getSize( const std::list<T>& value ) const;
395 
396  template <typename T>
397  char* encode( const std::list<T>& value, char* buffer, int& bufferSize ) const;
398 
399  template <typename T>
400  const char* decode( std::list<T>& value, const char* buffer, int& bufferSize ) const;
401 
403 
406 
407  template <typename T>
408  int getSize( const std::vector<T>& value ) const;
409 
410  template <typename T>
411  char* encode( const std::vector<T>& value, char* buffer, int& bufferSize ) const;
412 
413  template <typename T>
414  const char* decode( std::vector<T>& value, const char* buffer, int& bufferSize ) const;
415 
417 
420 
421  template <typename T1, typename T2>
422  int getSize( const std::map<T1,T2>& value ) const;
423 
424  template <typename T1, typename T2>
425  char* encode( const std::map<T1,T2>& value, char* buffer, int& bufferSize ) const;
426 
427  template <typename T1, typename T2>
428  const char* decode( std::map<T1,T2>& value, const char* buffer, int& bufferSize ) const;
429 
431 
432  protected:
433 
436  mutable DtU32 myMutableSerialNumber;
437 
441 
444  mutable DtTime myMutableSentTimeStamp;
445 
449 
450  };
451 
452 
453  DT_DLL_LIBPORTAL std::ostream& operator << ( std::ostream& str, const DtPortalMessage& msg );
454 
455 }
456 
457 DT_DLL_LIBPORTAL std::ostream& operator << ( std::ostream& str, const std::vector<DtString>& msg );
458 
459 
460 #define _pMessage_INL_
461 #include <portal/pMessage.inl>
462 #undef _pMessage_INL_
Definition: amountRecord.h:23
Represents variable length byte arrays.
Definition: variableLengthData.h:24
Contains the DtShaftRateData class declaration.
Definition: typedQuantityRecord.h:24
Contains the DtPostureTransitionRecord class declaration.
Declares classes and data types used by aggregates.
Represents SEES PDU Nozzle System Data.
Definition: nozzleSystemData.h:22
Definition: effectModifierRecord.h:24
Definition: indirectFirePowerRecord.h:24
#define DT_DLL_LIBPORTAL
Definition: include/portal/dllExport.h:20
DtU32 myMutableSerialNumber
Mutable because it can be set by the PConnection.
Definition: pMessage.h:436
Contains the DtMoppLevelTransitionRecord class declaration.
Instances of DtVrxRecordSetList are lists of RecordSets.
Definition: vrxRecordSetList.h:39
Contains the DtTypedAmountRecord class declaration.
Represents Linear Segment Parameter Objects.
Definition: linearSegmentData.h:38
Represents SEES PDU Propulsion System Data.
Definition: propulsionSystemData.h:22
#define DtDEC_ATTRIBUTE(T, N, n)
A Macro to define an attribute; as well as make an accessor and mutator for that attribute.
Definition: addAttribute.h:49
Contains the DtEmitterBeamData class declaration.
DtTime myMutableReceivedTimeStamp
Mutable because it can be set by the PConnection.
Definition: pMessage.h:448
Contains the DtTypedQuantityRecord class declaration.
Contains the DtRangedPowerRecord class declaration.
Contains the DtVariableLengthData class declaration.
Represents data of fixed length.
Definition: fixedLengthData.h:27
The base class for all messages passed through the portal.
Definition: pMessage.h:66
Definition: moppLevelTransitionRecord.h:23
Definition: sensorContactInfo.h:28
Definition: ringSectorsRecord.h:22
Contains the DtLinearSegmentData class declaration.
Contains the DtActiveSonarBeamData class declaration.
Contains the DtNozzleSystemData class declaration.
A container class for the SilentAggregateType.
Definition: aggregateTypes.h:23
Definition: casualtyReportRecord.h:24
Contains the DtTypedResupplyAmountRecord class declaration.
Contains the DtCasualtyReportRecord class declaration.
Contains the DtEWAttackRecord class declaration.
DT_DLL_LIBPORTAL std::ostream & operator<<(std::ostream &stream, const DtActiveSonarBeamData &data)
Contains the DtEWAttackDefendingRecord class declaration.
Definition: ewAttackRecord.h:24
Contains the DtIndirectFirePowerRecord class declaration.
Contains the DtPropulsionSystemData class declaration.
Definition: typedRateRecord.h:24
Represents variable data transmitted as part of the Aggregate Object.
Definition: aggregateTypes.h:97
DtU32 myMutableSendingBrokerId
Mutable because it can be set by the PConnection.
Definition: pMessage.h:440
Contains the DtEffectModifierRecord class declaration.
Represents Emitter Beam Objects.
Definition: activeSonarBeamData.h:31
Contains the DtPortalMessageKind type enumerations.
Contains the DtTypedRateRecord class declaration.
Definition: typedAmountRecord.h:25
Definition: rangedPowerRecord.h:24
DtTime myMutableSentTimeStamp
Mutable because it can be set by the PConnection.
Definition: pMessage.h:444
Definition: ewAttackDefendingRecord.h:24
Contains the DtAmountRecord class declaration.
Definition: postureTransitionRecord.h:23
Contains the DtFixedLengthData class declaration.
DtPortalMessageKind
A List of message kinds distributed with the Portal.
Definition: pMessageKinds.h:23
Contains the DtSensorContactInfo class declaration.
Represents Propulsion Noise Shaft Rate Data.
Definition: shaftRateData.h:25
Represents Emitter Beam Objects.
Definition: emitterBeamData.h:36
Represents entities which are not simulated, but rather only listed in the aggregate.
Definition: aggregateTypes.h:57
Contains the DtRingSectorsRecord class declaration.

Document ID: Generated on Wed Mar 12 15:05:17 EDT 2025 from SVN revision 274272
Copyright © 2005-2025 MAK Technologies. All Rights Reserved (www.mak.com)