VR-Link API Documentation for HLA 1.3
hlaObject.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 1992-2010 VT MAK
3 ** All rights reserved.
4 *******************************************************************************/
5 #ifndef hlaObject_H_
6 #define hlaObject_H_
7 
8 #if DtHLA
9 
10 
11 #include <vlutil/vlMachineTypes.h>
12 #include "removeObjectCbInfo.h"
14 #include "objClassDesc.h"
15 
19 
21 class DT_DLL_VL DtStateMsg;
24 
25 
26 
27 // ----------------------------------- DtParameterCbInfo -----------------------
28 // this class is only used by DtHlaObject for passing params to static
29 // callback fns. This is useed to make a copy of an AttributeHandleSet.
31 {
32 public:
33  DtParameterCbInfo( DtHlaObject* obj, const RTI::AttributeHandleSet& set );
34 
35  virtual ~DtParameterCbInfo();
36 
37 public:
39 #if DtHLA_1516
40  RTI::AttributeHandleSet mySet;
41 #else
42  RTI::AttributeHandleSet* mySet;
43 #endif
44 };
45 
57 {
58 public:
64 #if DtHLA_1516
65  RTI::ObjectInstanceHandle id,
66 #else
67  RTI::ObjectHandle id,
68 #endif
69  const char* name,
70  DtObjClassDesc& classDesc,
71  bool reflecting = false);
72 
78  const char* name,
79  DtObjClassDesc& classDesc,
80  bool reflecting = false);
81 
84  virtual ~DtHlaObject();
85 
86 protected:
87 
89  DtHlaObject();
90 
92  DtHlaObject( const DtHlaObject& src );
93 
95  DtHlaObject& operator=( const DtHlaObject& src );
96 
97 public:
99 #if DtHLA_1516
100  virtual inline const RTI::ObjectInstanceHandle& objectId() const;
101 #else
102  virtual inline const RTI::ObjectHandle& objectId() const;
103 #endif
104 
106  virtual inline const RTI::AttributeHandleSet& attrHandleSet();
107 
110  virtual inline const RTI::AttributeHandleSet& requestedAttributes();
111 
113  virtual inline RTI::ObjectClassHandle objectClassHandle() const;
114 
116  virtual inline const char* name() const;
117 
120  inline int numAttributes() const;
121 
123  virtual inline DtExerciseConn* exerciseConn() const;
124 
126  virtual inline DtObjClassDesc& classDesc() const;
127 
131 
135  virtual void setupUpdating();
136 
141  virtual void update();
142 
153  virtual void generateUpdate(
154  const RTI::AttributeHandleSet& eligibileAttrs,
155  const RTI::AttributeHandleSet& requiredAttrs,
156  DtStateMsg* msg );
157 
160  virtual void cleanupFromUpdating();
161 
165  virtual void processProvideUpdate(
166  const RTI::AttributeHandleSet& set );
167 
168 
171  virtual void clearRequestedAttributes();
172 
175  virtual inline const RTI::AttributeHandleSet& ownedAttributes();
176 
183  virtual void forceUpdate();
184  virtual void forceUpdate( const RTI::AttributeHandleSet& set );
185 
187  virtual void clearForcedAttributes();
188 
193  virtual const RTI::AttributeHandleSet& attributesNeededByFederation();
194 
197  virtual const RTI::AttributeHandleSet& eligibleAttributes();
198 
201  virtual const RTI::AttributeHandleSet& requiredAttributes();
202 
206  bool classNeededByFederation();
207 
211  void setupClassForUpdating();
212 
216 
218  virtual void setupReflecting();
219 
223  virtual void callReflect( const DtStateMsg& msg );
224 
230  virtual void callReflectLocal( const DtStateMsg& msg );
231 
235  virtual void reflectLocal( const DtStateMsg& msg ) = 0;
236 
239  virtual void cleanupFromReflecting();
240 
243  virtual void requestUpdate( RTI::AttributeHandleSet* attrs = 0 );
244 
246  virtual void addRemoveObjectCb( DtRemoveObjectCb cb, void* usr );
247 
250  virtual void removeRemoveObjectCb( DtRemoveObjectCb cb, void* usr );
251 
253  virtual void addPostReflectCb( DtObjectReflectAttributeValuesCb cb,
254  void* usr );
255 
257  virtual void removePostReflectCb( DtObjectReflectAttributeValuesCb cb,
258  void* usr );
259 
262  virtual void processRemoveObject();
263 
265 
269  virtual DtOwnershipHandler* setOwnershipHandler( DtOwnershipHandler* handler );
270 
274  virtual void unconditionalDivest( const RTI::AttributeHandleSet& attrs );
275 
281  virtual void negotiatedDivest( const RTI::AttributeHandleSet& attrs );
282 
285  virtual void cancelNegotiatedDivest( const RTI::AttributeHandleSet& attrs );
286 
292  virtual void acquireAttributes( const RTI::AttributeHandleSet& attrs,
293  bool ifAvailable = false );
294 
299  virtual void cancelAcquireAttributes( const RTI::AttributeHandleSet& attrs );
300 
303  virtual inline DtTime lastSimTimeUpdateReceived() const;
304 
305  virtual inline DtTime lastReceivedTimeStamp() const;
306 
307 protected:
309  virtual inline void setLastSimTimeUpdateReceived( DtTime tm );
310 
311  virtual inline void setLastReceivedTimeStamp( DtTime tm );
312 
313 #if DtHLA_1516
314 
315  virtual void copyToLocalAndRemote(const RTI::AttributeHandleValueMap& sourceList,
316  const RTI::AttributeHandleSet& neededByRemote, const RTI::AttributeHandleSet& neededByLocal,
317  RTI::AttributeHandleValueMap& toRemoteList, RTI::AttributeHandleValueMap& toLocalList);
318 
320  virtual void clearUpdatedAttributes(const RTI::AttributeHandleValueMap& sourceList);
321 #else
322 
323  virtual void copyToLocalAndRemote(const RTI::AttributeHandleValuePairSet& sourceList,
324  const RTI::AttributeHandleSet& neededByRemote, const RTI::AttributeHandleSet& neededByLocal,
325  RTI::AttributeHandleValuePairSet& toRemoteList, RTI::AttributeHandleValuePairSet& toLocalList);
326 
328  virtual void clearUpdatedAttributes(const RTI::AttributeHandleValuePairSet& sourceList);
329 #endif
330 
331 public:
335  virtual void printMsg( const DtStateMsg& msg,
336  bool fullReport = false ) const;
337 
341  virtual void localSubscriptionChanged();
342 
345  virtual void publicationChanged();
346 
347 
348 #if DtHLA_1516_EVOLVED
349 
350 
351  virtual const DtString& lastProducingFederate() const;
352 #endif
353 
354 
356  virtual void processRequestAssumption(
357  const RTI::AttributeHandleSet& attrs,
358 #if DtHLA_1516
359  const RTI::VariableLengthData &tag
360 #else
361  const char* tag
362 #endif
363  );
364 
366  virtual void processRequestRelease(
367  const RTI::AttributeHandleSet& attrs,
368 #if DtHLA_1516
369  const RTI::VariableLengthData &tag
370 #else
371  const char* tag
372 #endif
373  );
374 
377  virtual void processAttributeAcquisition(
378  const RTI::AttributeHandleSet& attrs );
379 
382  virtual void processAttributeDivestiture(
383  const RTI::AttributeHandleSet& attrs );
384 
386  virtual void processConfirmAcquisitionCancellation(
387  const RTI::AttributeHandleSet& attrs );
388 
389 
390 
391 protected:
392 
393  friend class DtHlaObjectManager;
394 
398  virtual void reflect( const DtStateMsg& msg ) = 0;
399 
402  void wipeRemoveList();
403 
405  virtual void clearRemoveList();
406 
409  void wipeReflectList();
410 
412  virtual void applyPostReflectCallbacks( const DtStateMsg& msg );
413 
415  virtual void loseOwnership( const RTI::AttributeHandleSet& attrs) ;
416 
418  virtual void gainOwnership( const RTI::AttributeHandleSet& attrs );
419 
421  virtual void processUpdatesOff( const RTI::AttributeHandleSet& set );
422 
425  void processUpdatesOn( const RTI::AttributeHandleSet& set );
426 
430 #if !DtHLA_1516
431  virtual bool known() const;
432 #endif
433 
436  void dumpRtiException(const char *functionName,
437  const RTI::Exception *exc) const;
438 
442  virtual void computeEligible();
443 
447  virtual void justRegistered();
448 
449 
450 #if DtHLA_1516_EVOLVED
451 
452 
453  virtual void setLastProducingFederate(const DtString& fedName);
454 #endif
455 
456 #ifndef DtHLA_1516
457 
458  virtual void addHandlesToSet(RTI::AttributeHandleSet& destinationSet,
459  const RTI::AttributeHandleSet& sourceSet);
460 #endif
461 
462 public:
464  static void ownerAcquisitionIfAvailableCb( void* usr );
465  static void ownerAcquisitionCb( void* usr );
466  static void negotiatedDivestitureCb( void* usr );
467  static void unconditionalDivestitureCb( void* usr );
468 
469 protected:
472  static void reflectAttributeValuesCb( const DtStateMsg& stateMsg,
473  void* hlaObj );
474 
476  static void updatesOnCb(
477 #if DtHLA_1516
478  RTI::ObjectInstanceHandle handle,
479 #else
480  RTI::ObjectHandle handle,
481 #endif
482  const RTI::AttributeHandleSet& attributeSet,
483  void* usr );
484 
486  static void updatesOffCb(
487 #if DtHLA_1516
488  RTI::ObjectInstanceHandle handle,
489 #else
490  RTI::ObjectHandle handle,
491 #endif
492  const RTI::AttributeHandleSet& attributeSet,
493  void* usr );
494 
495 
496 protected:
497 
498  char* myName;
499 
510 
511 #if DtHLA_1516_EVOLVED
512  DtString myLastProducingFederate;
513 #endif
514 
515 
516 #if DtHLA_1516
517  RTI::ObjectInstanceHandle myObjectId;
518 #else
519  RTI::ObjectHandle myObjectId;
520 #endif
521 
522 
523 
524 
525 
526  RTI::AttributeHandleSet* myEligibleAttrs;
527 
530  RTI::AttributeHandleSet* myNeededAttrs;
531 
534  RTI::AttributeHandleSet* myOwnedAttributes;
535 
537  RTI::AttributeHandleSet* myRequestedAttributes;
538 
540  RTI::AttributeHandleSet* myForcedAttributes;
541 
543  RTI::AttributeHandleSet* myRequiredAttributes;
544 
546 };
547 
548 #if DtHLA_1516
549 inline const RTI::ObjectInstanceHandle& DtHlaObject::objectId() const
550 #else
551 inline const RTI::ObjectHandle& DtHlaObject::objectId() const
552 #endif
553 {
554  return myObjectId;
555 }
556 
557 inline const RTI::AttributeHandleSet& DtHlaObject::attrHandleSet()
558 {
559  return myClassDesc.attrHandleSet();
560 }
561 
562 inline const RTI::AttributeHandleSet& DtHlaObject::requestedAttributes()
563 {
564  return *myRequestedAttributes;
565 }
566 inline RTI::ObjectClassHandle DtHlaObject::objectClassHandle() const
567 {
568  return myClassDesc.handle();
569 }
570 
571 inline const char* DtHlaObject::name() const
572 {
573  return myName;
574 }
575 
576 inline int DtHlaObject::numAttributes() const
577 {
578  return myClassDesc.numAttributes() ;
579 }
580 
582 {
583  return myExConn;
584 }
585 
587 {
588  return myClassDesc;
589 }
590 
591 inline const RTI::AttributeHandleSet& DtHlaObject::ownedAttributes()
592 {
593  return *myOwnedAttributes;
594 }
595 
597 {
599 }
600 
602 {
604 }
605 
607 {
608  return myLastReceivedTimeStamp;
609 }
610 
612 {
613  myLastReceivedTimeStamp = a_tm;
614 }
615 
616 
617 #endif
618 
619 #endif
620 

Document ID: Generated on Wed Oct 23 22:25:48 EDT 2013 from SVN revision 132765
Copyright © 2005-2013 VT MÄK. All Rights Reserved (www.mak.com)