VR-Link API Documentation for HLA 1.3
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
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:
59 
65 #if DtHLA_1516
66  RTI::ObjectInstanceHandle id,
67 #else
68  RTI::ObjectHandle id,
69 #endif
70  const char* name,
71  DtObjClassDesc& classDesc,
72  bool reflecting = false);
73 
79  const char* name,
80  DtObjClassDesc& classDesc,
81  bool reflecting = false);
82 
85  virtual ~DtHlaObject();
86 
87 protected:
88 
90  DtHlaObject();
91 
93  DtHlaObject( const DtHlaObject& src );
94 
96  DtHlaObject& operator=( const DtHlaObject& src );
97 
98 public:
99 
101 #if DtHLA_1516
102  virtual inline const RTI::ObjectInstanceHandle& objectId() const;
103 #else
104  virtual inline const RTI::ObjectHandle& objectId() const;
105 #endif
106 
108  virtual inline const RTI::AttributeHandleSet& attrHandleSet();
109 
112  virtual inline const RTI::AttributeHandleSet& requestedAttributes();
113 
115  virtual inline RTI::ObjectClassHandle objectClassHandle() const;
116 
118  virtual inline const char* name() const;
119 
122  inline int numAttributes() const;
123 
125  virtual inline DtExerciseConn* exerciseConn() const;
126 
128  virtual inline DtObjClassDesc& classDesc() const;
129 
133 
137  virtual void setupUpdating();
138 
143  virtual void update();
144 
155  virtual void generateUpdate(
156  const RTI::AttributeHandleSet& eligibileAttrs,
157  const RTI::AttributeHandleSet& requiredAttrs,
158  DtStateMsg* msg );
159 
162  virtual void cleanupFromUpdating();
163 
167  virtual void processProvideUpdate(
168  const RTI::AttributeHandleSet& set );
169 
170 
173  virtual void clearRequestedAttributes();
174 
177  virtual inline const RTI::AttributeHandleSet& ownedAttributes();
178 
185  virtual void forceUpdate();
186  virtual void forceUpdate( const RTI::AttributeHandleSet& set );
187 
189  virtual void clearForcedAttributes();
190 
195  virtual const RTI::AttributeHandleSet& attributesNeededByFederation();
196 
199  virtual const RTI::AttributeHandleSet& eligibleAttributes();
200 
203  virtual const RTI::AttributeHandleSet& requiredAttributes();
204 
208  bool classNeededByFederation();
209 
213  void setupClassForUpdating();
214 
218 
220  virtual void setupReflecting();
221 
225  virtual void callReflect( const DtStateMsg& msg );
226 
232  virtual void callReflectLocal( const DtStateMsg& msg );
233 
237  virtual void reflectLocal( const DtStateMsg& msg ) = 0;
238 
241  virtual void cleanupFromReflecting();
242 
245  virtual void requestUpdate( RTI::AttributeHandleSet* attrs = 0 );
246 
248  virtual void addRemoveObjectCb( DtRemoveObjectCb cb, void* usr );
249 
252  virtual void removeRemoveObjectCb( DtRemoveObjectCb cb, void* usr );
253 
255  virtual void addPostReflectCb( DtObjectReflectAttributeValuesCb cb,
256  void* usr );
257 
259  virtual void removePostReflectCb( DtObjectReflectAttributeValuesCb cb,
260  void* usr );
261 
264  virtual void processRemoveObject();
265 
267 
271  virtual DtOwnershipHandler* setOwnershipHandler( DtOwnershipHandler* handler );
272 
276  virtual void unconditionalDivest( const RTI::AttributeHandleSet& attrs );
277 
283  virtual void negotiatedDivest( const RTI::AttributeHandleSet& attrs );
284 
290  virtual void divestAttributes( const RTI::AttributeHandleSet& attrs,
291  bool ifAvailable = false );
292 
298  virtual void divestObject(bool ifAvailable = false);
299 
302  virtual void cancelNegotiatedDivest( const RTI::AttributeHandleSet& attrs );
303 
304 
310  virtual void acquireAttributes( const RTI::AttributeHandleSet& attrs,
311  bool ifAvailable = false );
312 
318  virtual void acquireObject( bool ifAvailable = false );
319 
324  virtual void cancelAcquireAttributes( const RTI::AttributeHandleSet& attrs );
325 
328  virtual inline DtTime lastSimTimeUpdateReceived() const;
329 
330  virtual inline DtTime lastReceivedTimeStamp() const;
331 
333  virtual inline void setLastSimTimeUpdateReceived( DtTime tm );
334 
335  virtual inline void setLastReceivedTimeStamp( DtTime tm );
336 
337 protected:
338 
339 #if DtHLA_1516
340 
342  virtual void copyToLocalAndRemote(const RTI::AttributeHandleValueMap& sourceList,
343  const RTI::AttributeHandleSet& neededByRemote, const RTI::AttributeHandleSet& neededByLocal,
344  RTI::AttributeHandleValueMap& toRemoteList, RTI::AttributeHandleValueMap& toLocalList);
345 
347  virtual bool handlesMatch(const RTI::AttributeHandleValueMap& handleValueMap,
348  const RTI::AttributeHandleSet& handleSet) const;
349 
351  virtual void clearUpdatedAttributes(const RTI::AttributeHandleValueMap& sourceList);
352 
353 #else
354 
356  virtual bool handlesMatch(const RTI::AttributeHandleValuePairSet& handleValueSet,
357  const RTI::AttributeHandleSet& handleSet) const;
358 
360  virtual void copyToLocalAndRemote(const RTI::AttributeHandleValuePairSet& sourceList,
361  const RTI::AttributeHandleSet& neededByRemote, const RTI::AttributeHandleSet& neededByLocal,
362  RTI::AttributeHandleValuePairSet& toRemoteList, RTI::AttributeHandleValuePairSet& toLocalList);
363 
365  virtual void clearUpdatedAttributes(const RTI::AttributeHandleValuePairSet& sourceList);
366 
367 #endif
368 
369 public:
370 
374  virtual void printMsg( const DtStateMsg& msg,
375  bool fullReport = false ) const;
376 
380  virtual void localSubscriptionChanged();
381 
384  virtual void publicationChanged();
385 
386 
387 #if DtHLA_1516_EVOLVED
388  virtual const DtString& lastProducingFederate() const;
391 #endif
392 
393 
395  virtual void processRequestAssumption(
396  const RTI::AttributeHandleSet& attrs,
397 #if DtHLA_1516
398  const RTI::VariableLengthData &tag
399 #else
400  const char* tag
401 #endif
402  );
403 
405  virtual void processRequestRelease(
406  const RTI::AttributeHandleSet& attrs,
407 #if DtHLA_1516
408  const RTI::VariableLengthData &tag
409 #else
410  const char* tag
411 #endif
412  );
413 
416  virtual void processAttributeAcquisition(
417  const RTI::AttributeHandleSet& attrs );
418 
421  virtual void processAttributeDivestiture(
422  const RTI::AttributeHandleSet& attrs );
423 
425  virtual void processConfirmAcquisitionCancellation(
426  const RTI::AttributeHandleSet& attrs );
427 
428 
429 
430 protected:
431 
432  friend class DtHlaObjectManager;
433 
437  virtual void reflect( const DtStateMsg& msg ) = 0;
438 
441  void wipeRemoveList();
442 
444  virtual void clearRemoveList();
445 
448  void wipeReflectList();
449 
451  virtual void applyPostReflectCallbacks( const DtStateMsg& msg );
452 
454  virtual void loseOwnership( const RTI::AttributeHandleSet& attrs) ;
455 
457  virtual void gainOwnership( const RTI::AttributeHandleSet& attrs,
458  bool notifyOwnershipManagement = true );
459 
461  virtual void processUpdatesOff( const RTI::AttributeHandleSet& set );
462 
465  void processUpdatesOn( const RTI::AttributeHandleSet& set );
466 
470 #if !DtHLA_1516
471  virtual bool known() const;
472 #endif
473 
476  virtual void dumpRtiException(const char *functionName,
477  const RTI::Exception *exc) const;
478 
482  virtual void computeEligible();
483 
487  virtual void justRegistered();
488 
489 
490 #if DtHLA_1516_EVOLVED
491  virtual void setLastProducingFederate(const DtString& fedName);
494 #endif
495 
498  virtual void addHandlesToSet(RTI::AttributeHandleSet& destinationSet,
499  const RTI::AttributeHandleSet& sourceSet);
500 
501 public:
503  static void ownerAcquisitionIfAvailableCb( void* usr );
504  static void ownerAcquisitionCb( void* usr );
505  static void negotiatedDivestitureCb( void* usr );
506  static void unconditionalDivestitureCb( void* usr );
507 
508 protected:
511  static void reflectAttributeValuesCb( const DtStateMsg& stateMsg,
512  void* hlaObj );
513 
515  static void updatesOnCb(
516 #if DtHLA_1516
517  RTI::ObjectInstanceHandle handle,
518 #else
519  RTI::ObjectHandle handle,
520 #endif
521  const RTI::AttributeHandleSet& attributeSet,
522  void* usr );
523 
525  static void updatesOffCb(
526 #if DtHLA_1516
527  RTI::ObjectInstanceHandle handle,
528 #else
529  RTI::ObjectHandle handle,
530 #endif
531  const RTI::AttributeHandleSet& attributeSet,
532  void* usr );
533 
534 
535 protected:
536 
537  char* myName;
538 
549 
552  {
556  UpdateSplit
557  };
560 
561 #if DtHLA_1516_EVOLVED
562  DtString myLastProducingFederate;
563 #endif
564 
565 
566 #if DtHLA_1516
567  RTI::ObjectInstanceHandle myObjectId;
568 #else
569  RTI::ObjectHandle myObjectId;
570 #endif
571  RTI::AttributeHandleSet* myEligibleAttrs;
577 
580  RTI::AttributeHandleSet* myNeededAttrs;
581 
584  RTI::AttributeHandleSet* myOwnedAttributes;
585 
587  RTI::AttributeHandleSet* myRequestedAttributes;
588 
590  RTI::AttributeHandleSet* myForcedAttributes;
591 
593  RTI::AttributeHandleSet* myRequiredAttributes;
595 
598  RTI::AttributeHandleSet* mySelfReflectSplitAttrs;
599 
601  RTI::AttributeHandleSet* myEligibleNeeded;
602 
604  RTI::AttributeHandleSet* myEligibleSubscribed;
605 
607  RTI::AttributeHandleSet* myScratchAttributes;
608 
610 
611 };
612 
613 #if DtHLA_1516
614 inline const RTI::ObjectInstanceHandle& DtHlaObject::objectId() const
615 #else
616 inline const RTI::ObjectHandle& DtHlaObject::objectId() const
617 #endif
618 {
619  return myObjectId;
620 }
621 
622 inline const RTI::AttributeHandleSet& DtHlaObject::attrHandleSet()
623 {
624  return myClassDesc.attrHandleSet();
625 }
626 
627 inline const RTI::AttributeHandleSet& DtHlaObject::requestedAttributes()
628 {
629  return *myRequestedAttributes;
630 }
631 inline RTI::ObjectClassHandle DtHlaObject::objectClassHandle() const
632 {
633  return myClassDesc.handle();
634 }
635 
636 inline const char* DtHlaObject::name() const
637 {
638  return myName;
639 }
640 
641 inline int DtHlaObject::numAttributes() const
642 {
643  return myClassDesc.numAttributes() ;
644 }
645 
647 {
648  return myExConn;
649 }
650 
652 {
653  return myClassDesc;
654 }
655 
656 inline const RTI::AttributeHandleSet& DtHlaObject::ownedAttributes()
657 {
658  return *myOwnedAttributes;
659 }
660 
662 {
664 }
665 
667 {
669 }
670 
672 {
674 }
675 
677 {
679 }
680 
681 
682 #endif
683 
684 #endif
685 
Definition: hlaObject.h:555
virtual const char * name() const
Get the object&#39;s name.
Definition: hlaObject.h:636
void(* DtObjectReflectAttributeValuesCb)(const DtStateMsg &msg, DtHlaObject *obj, void *usr)
Object reflect attribute values callback signature.
Definition: objectReflectAttributeValuesCbInfo.h:23
RTI::AttributeHandleSet * myForcedAttributes
Requested by a call to setForcedUpdate.
Definition: hlaObject.h:590
Instances of DtExerciseConn are used to provide an application&#39;s interface or connection to the netwo...
Definition: exerciseConnHLA.h:60
RTI::AttributeHandleSet * myNeededAttrs
Set of owned attributes for which we have received a turnUpdatesOn more recently than a turnUpdatesOf...
Definition: hlaObject.h:580
virtual const RTI::AttributeHandleSet & ownedAttributes()
Returns the set of attributes of this object that are owned by the local federate.
Definition: hlaObject.h:656
#define DT_DLL_VL
Definition: vlMachineTypes.h:108
DtOwnershipHandler * myOwnershipHandler
Definition: hlaObject.h:609
DtExerciseConn * myExConn
Definition: hlaObject.h:539
RTI::ObjectHandle myObjectId
Definition: hlaObject.h:569
DtTime myLastSimTimeUpdateReceived
Definition: hlaObject.h:546
char * myName
Definition: hlaObject.h:537
SplitUpdateDiscriminant
When remotely needed and locally subscribed are the same, split is not necessary. ...
Definition: hlaObject.h:551
virtual const RTI::AttributeHandleSet & attrHandleSet() const
Get the set of valid attribute handles for this class.
Definition: objClassDesc13.h:326
virtual void setLastReceivedTimeStamp(DtTime tm)
Definition: hlaObject.h:676
DtList myReflectCbList
Definition: hlaObject.h:543
virtual DtObjClassDesc & classDesc() const
Get the class descriptor for the object&#39;s class.
Definition: hlaObject.h:651
An instance of DtObjClassDesc is a &quot;class descriptor&quot; for an HLA Object class.
Definition: objClassDesc13.h:41
Definition: hlaObject.h:554
DtListItem * myRemoveCbListNextPtr
Definition: hlaObject.h:544
Definition: hlaObject.h:30
RTI::AttributeHandleSet * myEligibleSubscribed
Eligible attributes that are subscribed locally.
Definition: hlaObject.h:604
RTI::AttributeHandleSet * myScratchAttributes
Scratch set to use temporarily saves temporary allocation.
Definition: hlaObject.h:607
bool myUpdateRequiredAttributes
Definition: hlaObject.h:594
Instances of DtHlaObject are used to represent HLA objects which are communicated across the network...
Definition: hlaObject.h:56
DtList is deprecated, please use std::list&lt;T&gt;.
Definition: vlList.h:71
DtObjClassDesc & myClassDesc
Definition: hlaObject.h:548
DtListItem * myReflectCbListNextPtr
Definition: hlaObject.h:545
virtual DtTime lastReceivedTimeStamp() const
Definition: hlaObject.h:671
SplitUpdateDiscriminant mySplitUpdate
Flag to indicate when to split values between update and self reflect.
Definition: hlaObject.h:559
Definition: hlaObject.h:553
virtual DtExerciseConn * exerciseConn() const
Get the exercise connection for this object.
Definition: hlaObject.h:646
virtual RTI::ObjectClassHandle objectClassHandle() const
Get the object&#39;s class handle.
Definition: hlaObject.h:631
virtual DtTime lastSimTimeUpdateReceived() const
Returns the value of VR-Link simulation time at the time the last attribute update was received for t...
Definition: hlaObject.h:661
virtual const RTI::AttributeHandleSet & requestedAttributes()
Returns the union of all sets of attributes requested since the last call to clearRequestedAttributes...
Definition: hlaObject.h:627
virtual RTI::ObjectClassHandle handle() const
Get the object&#39;s class handle.
Definition: objClassDesc13.h:321
DtList myRemoveCbList
Definition: hlaObject.h:542
RTI::AttributeHandleSet * myRequiredAttributes
Union of forced and requested - not computed until needed.
Definition: hlaObject.h:593
virtual int numAttributes() const
Get the number of attributes associated with this object, including privilege to delete.
Definition: objClassDesc13.h:351
DtHlaObject * myObj
Definition: hlaObject.h:38
bool myUpdating
Definition: hlaObject.h:541
This is a base class meant to encapsulate user callbacks on ownership management services.
Definition: ownershipHandlerHLA.h:27
class DtHlaObjectManager:
Definition: hlaObjectManager.h:30
RTI::AttributeHandleSet * mySet
Definition: hlaObject.h:42
virtual const RTI::ObjectHandle & objectId() const
Get the object&#39;s handle.
Definition: hlaObject.h:616
RTI::AttributeHandleSet * myEligibleNeeded
Eligible attributes that are needed remotely.
Definition: hlaObject.h:601
lint -e266
Definition: vlList.h:25
DtVrlRtiAmbassador is a pure virtual class, designed to provide a foundation for different ways to se...
Definition: vrlRtiAmbassador13.h:25
RTI::AttributeHandleSet * myOwnedAttributes
Set of attributes owned by the local federate.
Definition: hlaObject.h:584
virtual void setLastSimTimeUpdateReceived(DtTime tm)
Set the time an update was last received or sent.
Definition: hlaObject.h:666
Instances of DtString are used to represent strings.
Definition: vlString.h:29
virtual const RTI::AttributeHandleSet & attrHandleSet()
Get the set of attributes associated with this object&#39;s FOM class.
Definition: hlaObject.h:622
RTI::AttributeHandleSet * mySelfReflectSplitAttrs
When self reflecting, these attributes are the differences between eligible needed and eligible subsc...
Definition: hlaObject.h:598
DtTime myLastReceivedTimeStamp
Definition: hlaObject.h:547
class DtStateMsg:
Definition: stateMsgHLA.h:32
RTI::AttributeHandleSet * myRequestedAttributes
Requested by other federates.
Definition: hlaObject.h:587
This file contains typedefs for machine dependant types.
int numAttributes() const
Get the number of attributes associated with this object&#39;s FOM class.
Definition: hlaObject.h:641
bool myReflecting
Definition: hlaObject.h:540
void(* DtRemoveObjectCb)(DtHlaObject *obj, void *usr)
Definition: removeObjectCbInfo.h:22

Document ID: Generated on Mon Apr 25 03:39:01 EDT 2022 from SVN revision 242502
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)