VR-Link API Documentation for HLA Evolved
hlaObj.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 1992-2010 VT MAK
3 ** All rights reserved.
4 *******************************************************************************/
5 #ifndef hlaObj_H_
6 #define hlaObj_H_
7 
8 #if DtHLA
9 
10 
11 #include <vlutil/vlMachineTypes.h>
12 #include "remObjCbInfo.h"
13 #include "objRefCbInfo.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 public:
317  virtual void printMsg( const DtStateMsg& msg,
318  bool fullReport = false ) const;
319 
323  virtual void localSubscriptionChanged();
324 
327  virtual void publicationChanged();
328 
329 
330 #if DtHLA_1516_EVOLVED
331 
332 
333  virtual const DtString& lastProducingFederate() const;
334 #endif
335 
336 #if DtHLA_1516
337 
338  virtual const std::set<DtDDMRegion>& lastRegionInformation() const;
339 #endif
340 
342  virtual void processRequestAssumption(
343  const RTI::AttributeHandleSet& attrs,
344 #if DtHLA_1516
345  const RTI::VariableLengthData &tag
346 #else
347  const char* tag
348 #endif
349  );
350 
352  virtual void processRequestRelease(
353  const RTI::AttributeHandleSet& attrs,
354 #if DtHLA_1516
355  const RTI::VariableLengthData &tag
356 #else
357  const char* tag
358 #endif
359  );
360 
363  virtual void processAttributeAcquisition(
364  const RTI::AttributeHandleSet& attrs );
365 
368  virtual void processAttributeDivestiture(
369  const RTI::AttributeHandleSet& attrs );
370 
372  virtual void processConfirmAcquisitionCancellation(
373  const RTI::AttributeHandleSet& attrs );
374 
375 
376 
377 protected:
378 
379  friend class DtHlaObjectManager;
380 
384  virtual void reflect( const DtStateMsg& msg ) = 0;
385 
388  void wipeRemoveList();
389 
391  virtual void clearRemoveList();
392 
395  void wipeReflectList();
396 
398  virtual void applyPostReflectCallbacks( const DtStateMsg& msg );
399 
401  virtual void loseOwnership( const RTI::AttributeHandleSet& attrs) ;
402 
404  virtual void gainOwnership( const RTI::AttributeHandleSet& attrs );
405 
407  virtual void processUpdatesOff( const RTI::AttributeHandleSet& set );
408 
411  void processUpdatesOn( const RTI::AttributeHandleSet& set );
412 
416 #if !DtHLA_1516
417  virtual bool known() const;
418 #endif
419 
422  void dumpRtiException(const char *functionName,
423  const RTI::Exception *exc) const;
424 
428  virtual void computeEligible();
429 
433  virtual void justRegistered();
434 
435 
436 #if DtHLA_1516_EVOLVED
437 
438 
439  virtual void setLastProducingFederate(const DtString& fedName);
440 #endif
441 
442 #if DtHLA_1516
443 
444  virtual void setRegionInformation(const std::set<DtDDMRegion>& regions);
445 #endif
446 
447 
448 
449 public:
451  static void ownerAcquisitionIfAvailableCb( void* usr );
452  static void ownerAcquisitionCb( void* usr );
453  static void negotiatedDivestitureCb( void* usr );
454  static void unconditionalDivestitureCb( void* usr );
455 
456 protected:
459  static void reflectAttributeValuesCb( const DtStateMsg& stateMsg,
460  void* hlaObj );
461 
463  static void updatesOnCb(
464 #if DtHLA_1516
465  RTI::ObjectInstanceHandle handle,
466 #else
467  RTI::ObjectHandle handle,
468 #endif
469  const RTI::AttributeHandleSet& attributeSet,
470  void* usr );
471 
473  static void updatesOffCb(
474 #if DtHLA_1516
475  RTI::ObjectInstanceHandle handle,
476 #else
477  RTI::ObjectHandle handle,
478 #endif
479  const RTI::AttributeHandleSet& attributeSet,
480  void* usr );
481 
482 
483 protected:
484 
485  char* myName;
486 
497 
498 #if DtHLA_1516_EVOLVED
500 #endif
501 
502 #if DtHLA_1516
503 
504  std::set<DtDDMRegion> myLastRegionInformation;
505 #endif
506 
507 
508 #if DtHLA_1516
509  RTI::ObjectInstanceHandle myObjectId;
510 #else
511  RTI::ObjectHandle myObjectId;
512 #endif
513 
514 
515 
516 
517 
518  RTI::AttributeHandleSet* myEligibleAttrs;
519 
522  RTI::AttributeHandleSet* myNeededAttrs;
523 
526  RTI::AttributeHandleSet* myOwnedAttributes;
527 
529  RTI::AttributeHandleSet* myRequestedAttributes;
530 
532  RTI::AttributeHandleSet* myForcedAttributes;
533 
535  RTI::AttributeHandleSet* myRequiredAttributes;
536 
538 };
539 
540 #if DtHLA_1516
541 inline const RTI::ObjectInstanceHandle& DtHlaObject::objectId() const
542 #else
543 inline const RTI::ObjectHandle& DtHlaObject::objectId() const
544 #endif
545 {
546  return myObjectId;
547 }
548 
549 inline const RTI::AttributeHandleSet& DtHlaObject::attrHandleSet()
550 {
551  return myClassDesc.attrHandleSet();
552 }
553 
554 inline const RTI::AttributeHandleSet& DtHlaObject::requestedAttributes()
555 {
556  return *myRequestedAttributes;
557 }
558 inline RTI::ObjectClassHandle DtHlaObject::objectClassHandle() const
559 {
560  return myClassDesc.handle();
561 }
562 
563 inline const char* DtHlaObject::name() const
564 {
565  return myName;
566 }
567 
568 inline int DtHlaObject::numAttributes() const
569 {
570  return myClassDesc.numAttributes() ;
571 }
572 
574 {
575  return myExConn;
576 }
577 
579 {
580  return myClassDesc;
581 }
582 
583 inline const RTI::AttributeHandleSet& DtHlaObject::ownedAttributes()
584 {
585  return *myOwnedAttributes;
586 }
587 
589 {
591 }
592 
594 {
596 }
597 
599 {
600  return myLastReceivedTimeStamp;
601 }
602 
604 {
605  myLastReceivedTimeStamp = a_tm;
606 }
607 
608 
609 #endif
610 
611 #endif
612 

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)