VR-Link API Documentation for HLA 1516
 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 MAK Technologies, Inc
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 
16 
20 
22 class DT_DLL_VL DtStateMsg;
25 
26 
27 
28 // ----------------------------------- DtParameterCbInfo -----------------------
29 // this class is only used by DtHlaObject for passing params to static
30 // callback fns. This is useed to make a copy of an AttributeHandleSet.
32 {
33 public:
34 
35  DtParameterCbInfo( DtHlaObject* obj, const RTI::AttributeHandleSet& set );
36 
37  virtual ~DtParameterCbInfo();
38 
39 public:
41 #if DtHLA_1516
42  RTI::AttributeHandleSet mySet;
43 #else
44  RTI::AttributeHandleSet* mySet;
45 #endif
46 };
47 
59 {
60 public:
61 
67 #if DtHLA_1516
68  RTI::ObjectInstanceHandle id,
69 #else
71 #endif
72  const char* name,
73  DtObjClassDesc& classDesc,
74  bool reflecting = false);
75 
81  const char* name,
82  DtObjClassDesc& classDesc,
83  bool reflecting = false);
84 
87  virtual ~DtHlaObject();
88 
89 protected:
90 
92  DtHlaObject();
93 
95  DtHlaObject( const DtHlaObject& src );
96 
98  DtHlaObject& operator=( const DtHlaObject& src );
99 
100 public:
101 
103 #if DtHLA_1516
104  virtual inline const RTI::ObjectInstanceHandle& objectId() const;
105 #else
106  virtual inline const RTI::ObjectHandle& objectId() const;
107 #endif
108 
110  virtual inline const RTI::AttributeHandleSet& attrHandleSet();
111 
114  virtual inline const RTI::AttributeHandleSet& requestedAttributes();
115 
117  virtual inline RTI::ObjectClassHandle objectClassHandle() const;
118 
120  virtual inline const char* name() const;
121 
124  inline int numAttributes() const;
125 
127  virtual inline DtExerciseConn* exerciseConn() const;
128 
130  virtual inline DtObjClassDesc& classDesc() const;
131 
135 
139  virtual void setupUpdating();
140 
145  virtual bool update();
146 
157  virtual void generateUpdate(
158  const RTI::AttributeHandleSet& eligibileAttrs,
159  const RTI::AttributeHandleSet& requiredAttrs,
160  DtStateMsg* msg );
161 
164  virtual void cleanupFromUpdating();
165 
169  virtual void processProvideUpdate(
170  const RTI::AttributeHandleSet& set );
171 
172 
175  virtual void clearRequestedAttributes();
176 
179  virtual inline const RTI::AttributeHandleSet& ownedAttributes();
180 
187  virtual void forceUpdate();
188  virtual void forceUpdate( const RTI::AttributeHandleSet& set );
189 
191  virtual void clearForcedAttributes();
192 
197  virtual const RTI::AttributeHandleSet& attributesNeededByFederation();
198 
201  virtual const RTI::AttributeHandleSet& eligibleAttributes();
202 
205  virtual const RTI::AttributeHandleSet& requiredAttributes();
206 
210  bool classNeededByFederation();
211 
215  void setupClassForUpdating();
216 
220 
222  virtual void setupReflecting();
223 
227  virtual void callReflect( const DtStateMsg& msg );
228 
234  virtual void callReflectLocal( const DtStateMsg& msg );
235 
239  virtual void reflectLocal( const DtStateMsg& msg ) = 0;
240 
243  virtual void cleanupFromReflecting();
244 
247  virtual void requestUpdate( RTI::AttributeHandleSet* attrs = 0 );
248 
250  virtual void addRemoveObjectCb( DtRemoveObjectCb cb, void* usr );
251 
254  virtual void removeRemoveObjectCb( DtRemoveObjectCb cb, void* usr );
255 
257  virtual void addPostReflectCb( DtObjectReflectAttributeValuesCb cb,
258  void* usr );
259 
261  virtual void removePostReflectCb( DtObjectReflectAttributeValuesCb cb,
262  void* usr );
263 
266  virtual void processRemoveObject();
267 
269 
273  virtual DtOwnershipHandler* setOwnershipHandler( DtOwnershipHandler* handler );
274 
278  virtual void unconditionalDivest( const RTI::AttributeHandleSet& attrs );
279 
285  virtual void negotiatedDivest( const RTI::AttributeHandleSet& attrs );
286 
292  virtual void divestAttributes( const RTI::AttributeHandleSet& attrs,
293  bool ifAvailable = false );
294 
300  virtual void divestObject(bool ifAvailable = false);
301 
304  virtual void cancelNegotiatedDivest( const RTI::AttributeHandleSet& attrs );
305 
306 
312  virtual void acquireAttributes( const RTI::AttributeHandleSet& attrs,
313  bool ifAvailable = false );
314 
320  virtual void acquireObject( bool ifAvailable = false );
321 
326  virtual void cancelAcquireAttributes( const RTI::AttributeHandleSet& attrs );
327 
330  virtual inline DtTime lastSimTimeUpdateReceived() const;
331 
332  virtual inline DtTime lastReceivedTimeStamp() const;
333 
335  virtual inline void setLastSimTimeUpdateReceived( DtTime tm );
336 
337  virtual inline void setLastReceivedTimeStamp( DtTime tm );
338 
339 protected:
340 
341 #if DtHLA_1516
342 
344  virtual void copyToLocalAndRemote(const RTI::AttributeHandleValueMap& sourceList,
345  const RTI::AttributeHandleSet& neededByRemote, const RTI::AttributeHandleSet& neededByLocal,
346  RTI::AttributeHandleValueMap& toRemoteList, RTI::AttributeHandleValueMap& toLocalList);
347 
349  virtual bool handlesMatch(const RTI::AttributeHandleValueMap& handleValueMap,
350  const RTI::AttributeHandleSet& handleSet) const;
351 
353  virtual void clearUpdatedAttributes(const RTI::AttributeHandleValueMap& sourceList);
354 
355 #else
356 
358  virtual bool handlesMatch(const RTI::AttributeHandleValuePairSet& handleValueSet,
359  const RTI::AttributeHandleSet& handleSet) const;
360 
362  virtual void copyToLocalAndRemote(const RTI::AttributeHandleValuePairSet& sourceList,
363  const RTI::AttributeHandleSet& neededByRemote, const RTI::AttributeHandleSet& neededByLocal,
365 
367  virtual void clearUpdatedAttributes(const RTI::AttributeHandleValuePairSet& sourceList);
368 
369 #endif
370 
371 public:
372 
376  virtual void printMsg( const DtStateMsg& msg,
377  bool fullReport = false ) const;
378 
382  virtual void localSubscriptionChanged();
383 
386  virtual void publicationChanged();
387 
388 
389 #if DtHLA_1516_EVOLVED
390  virtual const DtString& lastProducingFederate() const;
393 #endif
394 
395 
397  virtual void processRequestAssumption(
398  const RTI::AttributeHandleSet& attrs,
399 #if DtHLA_1516
400  const RTI::VariableLengthData &tag
401 #else
402  const char* tag
403 #endif
404  );
405 
407  virtual void processRequestRelease(
408  const RTI::AttributeHandleSet& attrs,
409 #if DtHLA_1516
410  const RTI::VariableLengthData &tag
411 #else
412  const char* tag
413 #endif
414  );
415 
418  virtual void processAttributeAcquisition(
419  const RTI::AttributeHandleSet& attrs );
420 
423  virtual void processAttributeDivestiture(
424  const RTI::AttributeHandleSet& attrs );
425 
427  virtual void processConfirmAcquisitionCancellation(
428  const RTI::AttributeHandleSet& attrs );
429 
430 
431 
432 protected:
433 
434  friend class DtHlaObjectManager;
435 
439  virtual void reflect( const DtStateMsg& msg ) = 0;
440 
443  void wipeRemoveList();
444 
446  virtual void clearRemoveList();
447 
450  void wipeReflectList();
451 
453  virtual void applyPostReflectCallbacks( const DtStateMsg& msg );
454 
456  virtual void loseOwnership( const RTI::AttributeHandleSet& attrs) ;
457 
459  virtual void gainOwnership( const RTI::AttributeHandleSet& attrs,
460  bool notifyOwnershipManagement = true );
461 
463  virtual void processUpdatesOff( const RTI::AttributeHandleSet& set );
464 
467  void processUpdatesOn( const RTI::AttributeHandleSet& set );
468 
472 #if !DtHLA_1516
473  virtual bool known() const;
474 #endif
475 
478  virtual void dumpRtiException(const char *functionName,
479  const RTI::Exception *exc) const;
480 
484  virtual void computeEligible();
485 
489  virtual void justRegistered();
490 
491 
492 #if DtHLA_1516_EVOLVED
493  virtual void setLastProducingFederate(const DtString& fedName);
496 #endif
497 
500  virtual void addHandlesToSet(RTI::AttributeHandleSet& destinationSet,
501  const RTI::AttributeHandleSet& sourceSet);
502 
503 
504 public:
506  static void ownerAcquisitionIfAvailableCb( void* usr );
507  static void ownerAcquisitionCb( void* usr );
508  static void negotiatedDivestitureCb( void* usr );
509  static void unconditionalDivestitureCb( void* usr );
510 
511 protected:
514  static void reflectAttributeValuesCb( const DtStateMsg& stateMsg,
515  void* hlaObj );
516 
518  static void updatesOnCb(
519 #if DtHLA_1516
520  RTI::ObjectInstanceHandle handle,
521 #else
522  RTI::ObjectHandle handle,
523 #endif
524  const RTI::AttributeHandleSet& attributeSet,
525  void* usr );
526 
528  static void updatesOffCb(
529 #if DtHLA_1516
530  RTI::ObjectInstanceHandle handle,
531 #else
532  RTI::ObjectHandle handle,
533 #endif
534  const RTI::AttributeHandleSet& attributeSet,
535  void* usr );
536 
537 
538 protected:
539 
540  char* myName;
541 
552 
555  {
559  UpdateSplit
560  };
563 
564 #if DtHLA_1516_EVOLVED
565  DtString myLastProducingFederate;
566 #endif
567 
568 
569 #if DtHLA_1516
570  RTI::ObjectInstanceHandle myObjectId;
571 #else
572  RTI::ObjectHandle myObjectId;
573 #endif
574  RTI::AttributeHandleSet* myEligibleAttrs;
580 
583  RTI::AttributeHandleSet* myNeededAttrs;
584 
587  RTI::AttributeHandleSet* myOwnedAttributes;
588 
590  RTI::AttributeHandleSet* myRequestedAttributes;
591 
593  RTI::AttributeHandleSet* myForcedAttributes;
594 
596  RTI::AttributeHandleSet* myRequiredAttributes;
598 
601  RTI::AttributeHandleSet* mySelfReflectSplitAttrs;
602 
604  RTI::AttributeHandleSet* myEligibleNeeded;
605 
607  RTI::AttributeHandleSet* myEligibleSubscribed;
608 
610  RTI::AttributeHandleSet* myScratchAttributes;
611 
613 
614 };
615 
616 #if DtHLA_1516
617 inline const RTI::ObjectInstanceHandle& DtHlaObject::objectId() const
618 #else
619 inline const RTI::ObjectHandle& DtHlaObject::objectId() const
620 #endif
621 {
622  return myObjectId;
623 }
624 
625 inline const RTI::AttributeHandleSet& DtHlaObject::attrHandleSet()
626 {
627  return myClassDesc.attrHandleSet();
628 }
629 
630 inline const RTI::AttributeHandleSet& DtHlaObject::requestedAttributes()
631 {
632  return *myRequestedAttributes;
633 }
634 inline RTI::ObjectClassHandle DtHlaObject::objectClassHandle() const
635 {
636  return myClassDesc.handle();
637 }
638 
639 inline const char* DtHlaObject::name() const
640 {
641  return myName;
642 }
643 
644 inline int DtHlaObject::numAttributes() const
645 {
646  return myClassDesc.numAttributes() ;
647 }
648 
650 {
651  return myExConn;
652 }
653 
655 {
656  return myClassDesc;
657 }
658 
659 inline const RTI::AttributeHandleSet& DtHlaObject::ownedAttributes()
660 {
661  return *myOwnedAttributes;
662 }
663 
665 {
667 }
668 
670 {
672 }
673 
675 {
677 }
678 
680 {
682 }
683 
684 
685 #endif
686 
687 #endif
688 
Definition: hlaObject.h:558
virtual const char * name() const
Get the object&#39;s name.
Definition: hlaObject.h:639
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:593
Instances of DtExerciseConn are used to provide an application&#39;s interface or connection to the netwo...
Definition: exerciseConnHLA.h:61
RTI::AttributeHandleSet * myNeededAttrs
Set of owned attributes for which we have received a turnUpdatesOn more recently than a turnUpdatesOf...
Definition: hlaObject.h:583
virtual const RTI::AttributeHandleSet & ownedAttributes()
Returns the set of attributes of this object that are owned by the local federate.
Definition: hlaObject.h:659
#define DT_DLL_VL
Definition: vlMachineTypes.h:108
RTI::AttributeHandleSet mySet
Definition: hlaObject.h:42
DtOwnershipHandler * myOwnershipHandler
Definition: hlaObject.h:612
DtExerciseConn * myExConn
Definition: hlaObject.h:542
DtTime myLastSimTimeUpdateReceived
Definition: hlaObject.h:549
char * myName
Definition: hlaObject.h:540
SplitUpdateDiscriminant
When remotely needed and locally subscribed are the same, split is not necessary. ...
Definition: hlaObject.h:554
virtual const RTI::AttributeHandleSet & attrHandleSet() const
Get the set of valid attribute handles for this class.
Definition: objClassDesc1516.h:344
virtual void setLastReceivedTimeStamp(DtTime tm)
Definition: hlaObject.h:679
DtList myReflectCbList
Definition: hlaObject.h:546
virtual DtObjClassDesc & classDesc() const
Get the class descriptor for the object&#39;s class.
Definition: hlaObject.h:654
An instance of DtObjClassDesc is a &quot;class descriptor&quot; for an HLA Object class.
Definition: objClassDesc1516.h:41
Definition: hlaObject.h:557
DtListItem * myRemoveCbListNextPtr
Definition: hlaObject.h:547
Definition: hlaObject.h:31
RTI::AttributeHandleSet * myEligibleSubscribed
Eligible attributes that are subscribed locally.
Definition: hlaObject.h:607
RTI::AttributeHandleSet * myScratchAttributes
Scratch set to use temporarily saves temporary allocation.
Definition: hlaObject.h:610
bool myUpdateRequiredAttributes
Definition: hlaObject.h:597
virtual const RTI::ObjectInstanceHandle & objectId() const
Get the object&#39;s handle.
Definition: hlaObject.h:617
Instances of DtHlaObject are used to represent HLA objects which are communicated across the network...
Definition: hlaObject.h:58
DtList is deprecated, please use std::list&lt;T&gt;.
Definition: vlList.h:71
ObjectInstanceHandle ObjectHandle
Definition: rtiCompatibility.h:192
DtObjClassDesc & myClassDesc
Definition: hlaObject.h:551
RTI::ObjectInstanceHandle myObjectId
Definition: hlaObject.h:570
DtListItem * myReflectCbListNextPtr
Definition: hlaObject.h:548
virtual DtTime lastReceivedTimeStamp() const
Definition: hlaObject.h:674
SplitUpdateDiscriminant mySplitUpdate
Flag to indicate when to split values between update and self reflect.
Definition: hlaObject.h:562
Definition: hlaObject.h:556
virtual DtExerciseConn * exerciseConn() const
Get the exercise connection for this object.
Definition: hlaObject.h:649
virtual RTI::ObjectClassHandle objectClassHandle() const
Get the object&#39;s class handle.
Definition: hlaObject.h:634
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:664
virtual const RTI::AttributeHandleSet & requestedAttributes()
Returns the union of all sets of attributes requested since the last call to clearRequestedAttributes...
Definition: hlaObject.h:630
virtual RTI::ObjectClassHandle handle() const
Get the object&#39;s class handle.
Definition: objClassDesc1516.h:339
DtList myRemoveCbList
Definition: hlaObject.h:545
RTI::AttributeHandleSet * myRequiredAttributes
Union of forced and requested - not computed until needed.
Definition: hlaObject.h:596
virtual int numAttributes() const
Get the number of attributes associated with this object, including privilege to delete.
Definition: objClassDesc1516.h:359
DtHlaObject * myObj
Definition: hlaObject.h:40
bool myUpdating
Definition: hlaObject.h:544
This is a base class meant to encapsulate user callbacks on ownership management services.
Definition: ownershipHandlerHLA.h:27
class DtHlaObjectManager:
Definition: hlaObjectManager.h:30
Used to provide backwards compatibility for VR-Link Encoders and Decoders who use either AttributeHan...
Definition: rtiCompatibility.h:154
RTI::AttributeHandleSet * myEligibleNeeded
Eligible attributes that are needed remotely.
Definition: hlaObject.h:604
lint -e266
Definition: vlList.h:25
Instances of DtVrlRtiAmbassador are for wrapping the calls to The RTI ambassador so that we may overr...
Definition: vrlRtiAmbassador1516.h:25
RTI::AttributeHandleSet * myOwnedAttributes
Set of attributes owned by the local federate.
Definition: hlaObject.h:587
virtual void setLastSimTimeUpdateReceived(DtTime tm)
Set the time an update was last received or sent.
Definition: hlaObject.h:669
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:625
RTI::AttributeHandleSet * mySelfReflectSplitAttrs
When self reflecting, these attributes are the differences between eligible needed and eligible subsc...
Definition: hlaObject.h:601
DtTime myLastReceivedTimeStamp
Definition: hlaObject.h:550
class DtStateMsg:
Definition: stateMsgHLA.h:32
RTI::AttributeHandleSet * myRequestedAttributes
Requested by other federates.
Definition: hlaObject.h:590
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:644
bool myReflecting
Definition: hlaObject.h:543
void(* DtRemoveObjectCb)(DtHlaObject *obj, void *usr)
Definition: removeObjectCbInfo.h:22

Document ID: Generated on Thu Sep 19 02:12:35 EDT 2024 from SVN revision 269601
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)