VR-Exchange 2.6 API Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
disTranslator.h
Go to the documentation of this file.
1 /****************************************************************************
2  * Copyright (c) 2016 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 
151  virtual DtBrokerObject* findBrokerObject( const DtString& objectName );
152 
156  virtual DtBrokerObject* releaseBrokerObject( const DtReflectedObject* refObj );
158 
160 
163 
166  static bool disDiscoveryCriteria( DtReflectedObject* refObj, void* usr );
167 
169  static void disObjectAddedCb( T_DisReflectedObject* refObj, void* usr );
170 
172  static void disObjectUpdatedCb( T_DisReflectedObject* refObj, void* usr );
173 
175  static void disObjectDeletedCb( T_DisReflectedObject* refObj, void* usr );
176 
178 
181 
184  virtual bool isPortalDiscoverable( const DtPortalReflectedObject* refObj );
185 
188  virtual bool isDisPublishable( DtBrokerObject* brokerObj,
189  const T_PortalReflectedObject* refObj );
190 
192 
195 
198  virtual bool isDisDiscoverable( const DtReflectedObject* refObj );
199 
201 
205 
206  virtual void callObjectDiscoverCallbacks( const DtBrokerObject* obj );
207  virtual void callObjectUpdateCallbacks( const DtBrokerObject* obj );
208  virtual void callObjectRemoveCallbacks( const DtBrokerObject* obj );
209 
211 
220 
221  virtual void discoverDisObject( T_DisReflectedObject& obj );
222  virtual void discoverPortalObject( const T_PortalReflectedObject& obj );
223 
225 
233 
234  virtual void createDisPublisher( DtBrokerObject* brokerObj );
235 
241  virtual DtString disObjectName( const T_PortalReflectedObject* refObj ) const;
242 
244  virtual DtEntityIdentifier mapIdentifier( const T_PortalReflectedObject* refObj,
245  const DtString& identifier );
246 
248  virtual DtEntityIdentifier mapObjectId( const DtEntityIdentifier& identifier );
249 
258  virtual DtObjectPublisher* instantiateDisPublisher(
259  const T_PortalReflectedObject* refObj, const DtEntityIdentifier& name );
260 
265  virtual bool performDisGlobalIdMapping( const DtObjectPublisher* publisher,
266  const T_PortalReflectedObject& refObj,
268  int systemId = DtGlobalIdMapper::NoSystemId,
269  int beamId = DtGlobalIdMapper::NoBeamId );
270 
271  virtual void createPortalPublisher( DtBrokerObject* brokerObj );
272 
278  virtual DtString portalObjectName( const T_DisReflectedObject* refObj ) const;
279 
284  virtual bool performPortalGlobalIdMapping(
286  const T_DisReflectedObject& refObj,
288  int systemId = DtGlobalIdMapper::NoSystemId,
289  int beamId = DtGlobalIdMapper::NoBeamId );
290 
292 
301 
302  virtual void receiveDisUpdate( T_DisReflectedObject& obj );
303  virtual void receivePortalUpdate( const T_PortalReflectedObject& obj );
304 
306 
315 
316  virtual void updateDisBrokerObject( DtBrokerObject* brokerObj,
317  const T_DisObjectStateRepository& sr );
318  virtual void updatePortalBrokerObject( DtBrokerObject* brokerObj,
319  const T_PortalObject& sr );
320 
322 
331  virtual void updateFilteredState( DtBrokerObject* brokerObj,
333  T_DisReflectedObject* refObj );
334 
339  virtual bool filterLocation( const DtReflectedObject& refObj,
340  const DtVector& location );
341 
345 
346  virtual void removeDisObject( const DtReflectedObject& refObj );
347  virtual void removePortalObject( const T_PortalReflectedObject& refObj );
348 
350 
355 
356  virtual void deleteDisPublisher( DtBrokerObject* brokerObj );
357  virtual void deletePortalPublisher( DtBrokerObject* brokerObj );
358 
360 
362  static void requestTransDiagCb( const DtRequestTranslationDiagnosticMessage& msg, void* usr );
363 
366 
368  virtual void printIncomingOutgoingStateReps(
369  const DtPortalObject& incoming, const DtStateRepository& outgoing ) const;
370 
372  virtual void printIncomingOutgoingStateReps(
373  const DtStateRepository& incoming, const DtPortalObject& outgoing ) const;
374 
378  virtual void performPortalDebugging( const DtString& objectName );
379 
381  virtual void performPortalDebugging( const DtPortalObject& incoming,
382  const DtStateRepository& outgoing );
383 
385  virtual void performPortalDebugging( const DtStateRepository& incoming,
386  const DtPortalObject& outgoing );
387 
388  virtual void printDumpGuiToText( const DtBrokerObject& brokerObj,
389  UpdateType ut ) const;
390 
392  virtual unsigned int numObjects() const;
393 
396  virtual void shutdown();
397 
398  public:
399 
402  virtual T_PortalObject* translate( T_PortalObject* destination,
403  const T_DisObjectStateRepository& source,
404  const T_DisReflectedObject& refObj ) = 0;
405 
408  virtual T_DisObjectStateRepository* translate(
409  T_DisObjectStateRepository* destination, const T_PortalObject& source,
410  const T_PortalReflectedObject& refObj ) = 0;
411 
412  private:
413 
416 
419 
421  bool operator == ( const DtDisObjectTranslator& rightOperand ) const;
422 
424  bool operator != ( const DtDisObjectTranslator& rightOperand ) const;
425 
426  protected:
427 
428  T_DisReflectedObjectList* myDisReflectedList;
429 
430  typedef std::pair<DtTime,bool> LocationFilteringInfo;
431  typedef std::map<const DtReflectedObject*,LocationFilteringInfo> LocationFilteringMap;
433 
434  typedef std::map<const DtReflectedObject*,DtBrokerObject*> DisToPortalReflectedMap;
435  typedef std::map<const DtPortalReflectedObject*,DtBrokerObject*> PortalToDisReflectedMap;
436 
439 
440  typedef std::set<DtString> TransDebugObjectNamesSet;
442 
443  };
444 
445 
462  template <class PortalInterType,class DisInterType>
464  : public DtBaseInteractionTranslator<PortalInterType>
465  {
466  public:
467 
470 
471  public:
472 
475  const DtString& name, DtPortalMessageKind kind );
476 
478  virtual ~DtDisInteractionTranslator();
479 
481  virtual void enableReflectTranslator( bool enabled );
482 
483  virtual DtDisBroker* disBroker();
484  virtual const DtDisBroker* disBroker() const;
485 
487  virtual void tick();
488 
489  protected:
490 
493 
494  virtual void initializeDisCallbacks();
495  virtual void removeDisCallbacks();
496 
498 
502 
503  static void receiveDisInteraction( DisInterType* inter, void* usr );
504  virtual void receiveDisInteraction( const DisInterType& inter );
505 
507 
510  virtual void receivePortalInteraction( const PortalInterType& inter );
511 
519 
520  virtual void createInteraction( const PortalInterType& inter );
521  virtual void createPortalInteraction( const DisInterType& inter );
522 
524 
527  virtual PortalInterType* translate( PortalInterType* destination,
528  const DisInterType& source ) = 0;
529 
532  virtual DisInterType* translate( DisInterType* destination,
533  const PortalInterType& source ) = 0;
534 
536  virtual void printIncomingOutgoingInteractions( const DtPortalInteraction& incoming,
537  const DtInteraction& outgoing ) const;
538 
540  virtual void printIncomingOutgoingInteractions( const DtInteraction& incoming,
541  const DtPortalInteraction& outgoing ) const;
542 
545  virtual bool testGlobalIdMapping( const DtString& idName, const DtString& id );
546 
549  virtual void shutdown();
550 
551  private:
552 
555 
558 
560  bool operator == ( const DtDisInteractionTranslator& rightOperand ) const;
561 
563  bool operator != ( const DtDisInteractionTranslator& rightOperand ) const;
564 
565  protected:
566 
567  typedef std::vector<PortalInterType> InteractionWaitList;
569 
570  };
571 
572  }
573 }
574 
575 #define _disTranslator_INL_
576 #include <disBroker/disTranslator.inl>
577 #undef _disTranslator_INL_

Document ID: Generated on Wed Jan 30 18:15:18 EST 2019 from SVN revision 195534
Copyright © 2005-2019 VT MÄK. All Rights Reserved (www.mak.com)