VR-Exchange 2.4 API Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
disTrans.h
Go to the documentation of this file.
1 /****************************************************************************
2  * Copyright (c) 2015 VT MAK
3  * All rights reserved.
4  ****************************************************************************/
5 
9 
10 #pragma once
11 
12 // Disable warning about missing operators.
13 // Comparison and assignment operators are declared but not defined
14 // to prevent their usage, but this causes a warning in template classes.
15 #pragma warning( disable : 4661 )
16 
17 #include <disBroker/dllExport.h>
19 
22 
25 
26 // All DIS Translators must have the following template arguments:
27 // The integer define of the DtPortalMessageKind,
28 // The PortalObject this message translates,
29 // The Reflected Portal Object class the message translates
30 // The Reflected DIS Object class
31 // The reflected list of objects
32 // The state repository class of the DIS Object
33 // The publisher class of the DIS Object
34 #define DIS_TEMPLATE_LIST \
35  template \
36  < class T_PortalObject \
37  , class T_PortalReflectedObject \
38  , class T_DisReflectedObject \
39  , class T_DisReflectedObjectList \
40  , class T_DisObjectStateRepository \
41  , class T_DisObjectPublisher>
42 
43 #define DIS_TEMPLATE_FUNCTION \
44  T_PortalObject, T_PortalReflectedObject, \
45  T_DisReflectedObject, T_DisReflectedObjectList, \
46  T_DisObjectStateRepository, T_DisObjectPublisher
47 
48 class DtInteraction;
49 class DtObjectPublisher;
50 class DtStateRepository;
51 class DtReflectedObject;
52 
53 namespace MAKVrExchange
54 {
55 
56  class DtRequestTranslationDiagnosticMessage;
57 
58  namespace DtDisBroker
59  {
60 
61  class DtDisBroker;
62 
87  : public DtBaseObjectTranslator<T_PortalObject,T_PortalReflectedObject>
88  {
89  public:
90 
92  typedef enum
93  {
94  none = 0,
95  discover = 1,
96  update = 2,
97  remove = 3
98  } UpdateType;
99 
102 
105 
106  public:
107 
110  const DtString& name, DtPortalMessageKind kind );
111 
113  virtual ~DtDisObjectTranslator();
114 
116  virtual void enableReflectTranslator( bool enabled );
117 
119  virtual void forceUpdateAll();
120 
122  virtual void tick();
123 
124  virtual DtDisBroker* disBroker();
125  virtual const DtDisBroker* disBroker() const;
126 
127  protected:
128 
131 
132  virtual void initializeDisCallbacks();
133  virtual void removeDisCallbacks();
134 
136 
139 
141  virtual DtBrokerObject* createBrokerObject( const DtReflectedObject* refObj );
143 
146  virtual DtBrokerObject* findBrokerObject( const DtReflectedObject* refObj );
147  virtual DtBrokerObject* findBrokerObject( const DtPortalReflectedObject* refObj );
148 
152  virtual DtBrokerObject* releaseBrokerObject( const DtReflectedObject* refObj );
154 
156 
159 
162  static bool disDiscoveryCriteria( DtReflectedObject* refObj, void* usr );
163 
165  static void disObjectAddedCb( T_DisReflectedObject* refObj, void* usr );
166 
168  static void disObjectUpdatedCb( T_DisReflectedObject* refObj, void* usr );
169 
171  static void disObjectDeletedCb( T_DisReflectedObject* refObj, void* usr );
172 
174 
177 
180  virtual bool isPortalDiscoverable( const DtPortalReflectedObject* refObj );
181 
184  virtual bool isDisPublishable( const DtBrokerObject* brokerObj,
185  const T_PortalReflectedObject* refObj );
186 
188 
191 
194  virtual bool isDisDiscoverable( const DtReflectedObject* refObj );
195 
197 
201 
202  virtual void callObjectDiscoverCallbacks( const DtBrokerObject* obj );
203  virtual void callObjectUpdateCallbacks( const DtBrokerObject* obj );
204  virtual void callObjectRemoveCallbacks( const DtBrokerObject* obj );
205 
207 
216 
217  virtual void discoverDisObject( T_DisReflectedObject& obj );
218  virtual void discoverPortalObject( const T_PortalReflectedObject& obj );
219 
221 
229 
230  virtual void createDisPublisher( DtBrokerObject* brokerObj );
231 
237  virtual DtString disObjectName( const T_PortalReflectedObject* refObj ) const;
238 
240  virtual DtEntityIdentifier mapIdentifier( const T_PortalReflectedObject* refObj,
241  const DtString& identifier );
242 
244  virtual DtEntityIdentifier mapObjectId( const DtEntityIdentifier& identifier );
245 
254  virtual DtObjectPublisher* instantiateDisPublisher(
255  const T_PortalReflectedObject* refObj, const DtEntityIdentifier& name );
256 
261  virtual bool performDisGlobalIdMapping( const DtObjectPublisher* publisher,
262  const T_PortalReflectedObject& refObj,
264  int systemId = DtGlobalIdMapper::NoSystemId,
265  int beamId = DtGlobalIdMapper::NoBeamId );
266 
267  virtual void createPortalPublisher( DtBrokerObject* brokerObj );
268 
274  virtual DtString portalObjectName( const T_DisReflectedObject* refObj ) const;
275 
280  virtual bool performPortalGlobalIdMapping(
282  const T_DisReflectedObject& refObj,
284  int systemId = DtGlobalIdMapper::NoSystemId,
285  int beamId = DtGlobalIdMapper::NoBeamId );
286 
288 
297 
298  virtual void receiveDisUpdate( T_DisReflectedObject& obj );
299  virtual void receivePortalUpdate( const T_PortalReflectedObject& obj );
300 
302 
311 
312  virtual void updateDisBrokerObject( DtBrokerObject* brokerObj,
313  const T_DisObjectStateRepository& sr );
314  virtual void updatePortalBrokerObject( DtBrokerObject* brokerObj,
315  const T_PortalObject& sr );
316 
318 
327  virtual void updateFilteredState( DtBrokerObject* brokerObj,
329  T_DisReflectedObject* refObj );
330 
335  virtual bool filterLocation( const DtReflectedObject& refObj,
336  const DtVector& location );
337 
341 
342  virtual void removeDisObject( const DtReflectedObject& refObj );
343  virtual void removePortalObject( const T_PortalReflectedObject& refObj );
344 
346 
351 
352  virtual void deleteDisPublisher( DtBrokerObject* brokerObj );
353  virtual void deletePortalPublisher( DtBrokerObject* brokerObj );
354 
356 
358  static void requestTransDiagCb( const DtRequestTranslationDiagnosticMessage& msg, void* usr );
359 
362 
364  virtual void printIncomingOutgoingStateReps(
365  const DtPortalObject& incoming, const DtStateRepository& outgoing ) const;
366 
368  virtual void printIncomingOutgoingStateReps(
369  const DtStateRepository& incoming, const DtPortalObject& outgoing ) const;
370 
372  virtual void performPortalDebugging( const DtPortalObject& incoming,
373  const DtStateRepository& outgoing );
374 
376  virtual void performPortalDebugging( const DtStateRepository& incoming,
377  const DtPortalObject& outgoing );
378 
379  virtual void printDumpGuiToText( const DtBrokerObject& brokerObj,
380  UpdateType ut ) const;
381 
383  virtual unsigned int numObjects() const;
384 
387  virtual void shutdown();
388 
389  public:
390 
393  virtual T_PortalObject* translate( T_PortalObject* destination,
394  const T_DisObjectStateRepository& source,
395  const T_DisReflectedObject& refObj ) = 0;
396 
399  virtual T_DisObjectStateRepository* translate(
400  T_DisObjectStateRepository* destination, const T_PortalObject& source,
401  const T_PortalReflectedObject& refObj ) = 0;
402 
403  private:
404 
407 
410 
412  bool operator == ( const DtDisObjectTranslator& rightOperand ) const;
413 
415  bool operator != ( const DtDisObjectTranslator& rightOperand ) const;
416 
417  protected:
418 
419  T_DisReflectedObjectList* myDisReflectedList;
420 
421  typedef std::pair<DtTime,bool> LocationFilteringInfo;
422  typedef std::map<const DtReflectedObject*,LocationFilteringInfo> LocationFilteringMap;
424 
425  typedef std::map<const DtReflectedObject*,DtBrokerObject*> DisToPortalReflectedMap;
426  typedef std::map<const DtPortalReflectedObject*,DtBrokerObject*> PortalToDisReflectedMap;
427 
430 
431  typedef std::set<DtString> TransDebugObjectNamesSet;
433 
434  };
435 
436 
453  template <class PortalInterType,class DisInterType>
455  : public DtBaseInteractionTranslator<PortalInterType>
456  {
457  public:
458 
461 
462  public:
463 
466  const DtString& name, DtPortalMessageKind kind );
467 
469  virtual ~DtDisInteractionTranslator();
470 
472  virtual void enableReflectTranslator( bool enabled );
473 
474  virtual DtDisBroker* disBroker();
475  virtual const DtDisBroker* disBroker() const;
476 
478  virtual void tick();
479 
480  protected:
481 
484 
485  virtual void initializeDisCallbacks();
486  virtual void removeDisCallbacks();
487 
489 
493 
494  static void receiveDisInteraction( DisInterType* inter, void* usr );
495  virtual void receiveDisInteraction( const DisInterType& inter );
496 
498 
501  virtual void receivePortalInteraction( const PortalInterType& inter );
502 
510 
511  virtual void createInteraction( const PortalInterType& inter );
512  virtual void createPortalInteraction( const DisInterType& inter );
513 
515 
518  virtual PortalInterType* translate( PortalInterType* destination,
519  const DisInterType& source ) = 0;
520 
523  virtual DisInterType* translate( DisInterType* destination,
524  const PortalInterType& source ) = 0;
525 
527  virtual void printIncomingOutgoingInteractions( const DtPortalInteraction& incoming,
528  const DtInteraction& outgoing ) const;
529 
531  virtual void printIncomingOutgoingInteractions( const DtInteraction& incoming,
532  const DtPortalInteraction& outgoing ) const;
533 
536  virtual bool testGlobalIdMapping( const DtString& idName, const DtString& id );
537 
540  virtual void shutdown();
541 
542  private:
543 
546 
549 
551  bool operator == ( const DtDisInteractionTranslator& rightOperand ) const;
552 
554  bool operator != ( const DtDisInteractionTranslator& rightOperand ) const;
555 
556  protected:
557 
558  typedef std::vector<PortalInterType> InteractionWaitList;
560 
561  };
562 
563  }
564 }
565 
566 #define disTrans_INL_
567 #include "disTrans.inl"
568 #undef disTrans_INL_

Document ID: Generated on Thu Jul 23 10:25:22 EDT 2015 from SVN revision 155065
Copyright © 2005-2014 VT MÄK. All Rights Reserved (www.mak.com)