VR-Exchange 2.5 API Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
tenaTranslator.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 <tenaBroker/dllExport.h>
19 
22 
25 
26 #include <vl/globalObjectDesignator.h>
27 
28 // All TENA Translators must have the following template arguments:
29 // The integer define of the DtPortalMessageKind,
30 // The PortalObject this message translates,
31 // The Reflected Portal Object class the message translates
32 // The Reflected TENA Object class
33 // The reflected list of objects
34 // The state repository class of the TENA Object
35 // The publisher class of the TENA Object
36 #define TENA_TEMPLATE_LIST \
37  template \
38  < class T_PortalObject \
39  , class T_PortalReflectedObject \
40  , class T_TenaReflectedObject \
41  , class T_TenaReflectedObjectList \
42  , class T_TenaObjectStateRepository \
43  , class T_TenaObjectPublisher>
44 
45 #define TENA_TEMPLATE_FUNCTION \
46  T_PortalObject, T_PortalReflectedObject, \
47  T_TenaReflectedObject, T_TenaReflectedObjectList, \
48  T_TenaObjectStateRepository, T_TenaObjectPublisher
49 
50 class DtStateRepository;
51 
52 namespace MAKVrExchange
53 {
54 
55  class DtRequestTranslationDiagnosticMessage;
56 
57  namespace DtTenaBroker
58  {
59 
60  class DtTenaBroker;
61  class DtInteraction;
62  class DtReflectedObject;
63  class DtObjectPublisher;
64 
89  : public DtBaseObjectTranslator<T_PortalObject,T_PortalReflectedObject>
90  {
91  public:
92 
94  typedef enum
95  {
96  none = 0,
97  discover = 1,
98  update = 2,
99  remove = 3
100  } UpdateType;
101 
104 
107 
108  public:
109 
112  const DtString& name, DtPortalMessageKind kind );
113 
115  virtual ~DtTenaObjectTranslator();
116 
118  virtual void enableReflectTranslator( bool enabled );
119 
121  virtual void forceUpdateAll();
122 
124  virtual void tick();
125 
127  virtual bool isThrottlingRateOk( T_TenaObjectPublisher* publisher,
128  DtBrokerObject* brokerObj );
129 
130  virtual DtTenaBroker* tenaBroker();
131  virtual const DtTenaBroker* tenaBroker() const;
132 
134  virtual void shutdown();
135 
136  protected:
137 
140 
141  virtual void initializeTenaCallbacks();
142  virtual void removeTenaCallbacks();
143 
145 
148 
150  virtual DtBrokerObject* createBrokerObject( const DtReflectedObject* refObj );
152 
155  virtual DtBrokerObject* findBrokerObject( const DtReflectedObject* refObj );
156  virtual DtBrokerObject* findBrokerObject( const DtPortalReflectedObject* refObj );
157 
160  virtual DtBrokerObject* findBrokerObject( const DtString& objectName );
161 
165  virtual DtBrokerObject* releaseBrokerObject( const DtReflectedObject* refObj );
167 
169 
172 
175  static bool tenaDiscoveryCriteria( DtReflectedObject* refObj, void* usr );
176 
178  static void tenaObjectAddedCb( T_TenaReflectedObject* refObj, void* usr );
179 
181  static void tenaObjectUpdatedCb( T_TenaReflectedObject* refObj, void* usr );
182 
184  static void tenaObjectDeletedCb( T_TenaReflectedObject* refObj, void* usr );
185 
187 
190 
193  virtual bool isPortalDiscoverable( const DtPortalReflectedObject* refObj );
194 
197  virtual bool isTenaPublishable( DtBrokerObject* brokerObj,
198  const T_PortalReflectedObject* refObj );
199 
201 
204 
207  virtual bool isTenaDiscoverable( const DtReflectedObject* refObj );
208 
210 
214 
215  virtual void callObjectDiscoverCallbacks( const DtBrokerObject* obj );
216  virtual void callObjectUpdateCallbacks( const DtBrokerObject* obj );
217  virtual void callObjectRemoveCallbacks( const DtBrokerObject* obj );
218 
220 
229 
230  virtual void discoverTenaObject( T_TenaReflectedObject& obj );
231  virtual void discoverPortalObject( const T_PortalReflectedObject& obj );
232 
234 
242 
243  virtual void createTenaPublisher( DtBrokerObject* brokerObj );
244 
250  virtual DtString tenaObjectName( const T_PortalReflectedObject* refObj ) const;
251 
253  virtual DtEntityIdentifier mapIdentifier( const T_PortalReflectedObject* refObj,
254  const DtString& identifier );
255 
257  virtual DtEntityIdentifier mapObjectId( const DtEntityIdentifier& identifier );
258 
267  virtual DtObjectPublisher* instantiateTenaPublisher(
268  const T_PortalReflectedObject* refObj, const DtEntityIdentifier& name );
269 
274  virtual bool performTenaGlobalIdMapping( const DtObjectPublisher* publisher,
275  const T_PortalReflectedObject& refObj,
277  int systemId = DtGlobalIdMapper::NoSystemId,
278  int beamId = DtGlobalIdMapper::NoBeamId );
279 
280  virtual void createPortalPublisher( DtBrokerObject* brokerObj );
281 
287  virtual DtString portalObjectName( const T_TenaReflectedObject* refObj ) const;
288 
293  virtual bool performPortalGlobalIdMapping(
295  const T_TenaReflectedObject& refObj,
297  int systemId = DtGlobalIdMapper::NoSystemId,
298  int beamId = DtGlobalIdMapper::NoBeamId );
299 
301 
310 
311  virtual void receiveTenaUpdate( T_TenaReflectedObject& obj );
312  virtual void receivePortalUpdate( const T_PortalReflectedObject& obj );
313 
315 
324 
325  virtual void updateTenaBrokerObject( DtBrokerObject* brokerObj,
326  const T_TenaObjectStateRepository& sr );
327  virtual void updatePortalBrokerObject( DtBrokerObject* brokerObj,
328  const T_PortalObject& sr );
329 
331 
340  virtual void updateFilteredState( DtBrokerObject* brokerObj,
342  T_TenaReflectedObject* refObj );
343 
348  virtual bool filterLocation( const DtReflectedObject& refObj,
349  const DtVector& location );
350 
354 
355  virtual void removeTenaObject( const DtReflectedObject& refObj );
356  virtual void removePortalObject( const T_PortalReflectedObject& refObj );
357 
359 
364 
365  virtual void deleteTenaPublisher( DtBrokerObject* brokerObj );
366  virtual void deletePortalPublisher( DtBrokerObject* brokerObj );
367 
369 
371  virtual const DtGlobalObjectDesignator& convertGlobalId( const DtString& id );
372 
374  virtual const DtString& convertGlobalId( const DtGlobalObjectDesignator& id );
375 
377  virtual bool isEntityIdentifierValid( const DtEntityIdentifier& entityId ) const;
378 
380  static void requestTransDiagCb( const DtRequestTranslationDiagnosticMessage& msg, void* usr );
381 
384 
386  virtual void printIncomingOutgoingStateReps(
387  const DtPortalObject& incoming, const DtStateRepository& outgoing ) const;
388 
390  virtual void printIncomingOutgoingStateReps(
391  const DtStateRepository& incoming, const DtPortalObject& outgoing ) const;
392 
396  virtual void performPortalDebugging( const DtString& objectName );
397 
399  virtual void performPortalDebugging( const DtPortalObject& incoming,
400  const DtStateRepository& outgoing );
401 
403  virtual void performPortalDebugging( const DtStateRepository& incoming,
404  const DtPortalObject& outgoing );
405 
406  virtual void printDumpGuiToText( const DtBrokerObject& brokerObj,
407  UpdateType ut ) const;
408 
410  virtual unsigned int numObjects() const;
411 
412  public:
413 
416  virtual T_PortalObject* translate( T_PortalObject* destination,
417  const T_TenaObjectStateRepository& source,
418  const T_TenaReflectedObject& refObj ) = 0;
419 
422  virtual T_TenaObjectStateRepository* translate(
423  T_TenaObjectStateRepository* destination, const T_PortalObject& source,
424  const T_PortalReflectedObject& refObj ) = 0;
425 
426  private:
427 
430 
433 
435  bool operator == ( const DtTenaObjectTranslator& rightOperand ) const;
436 
438  bool operator != ( const DtTenaObjectTranslator& rightOperand ) const;
439 
440  protected:
441 
442  T_TenaReflectedObjectList* myTenaReflectedList;
443 
444  typedef std::pair<DtTime,bool> LocationFilteringInfo;
445  typedef std::map<const DtReflectedObject*,LocationFilteringInfo> LocationFilteringMap;
447 
448  typedef std::map<const DtReflectedObject*,DtBrokerObject*> TenaToPortalReflectedMap;
449  typedef std::map<const DtPortalReflectedObject*,DtBrokerObject*> PortalToTenaReflectedMap;
450 
453 
454  typedef std::set<DtString> TransDebugObjectNamesSet;
456 
457  };
458 
459 
476  template <class PortalInterType,class TenaInterType>
478  : public DtBaseInteractionTranslator<PortalInterType>
479  {
480  public:
481 
484 
487 
488  public:
489 
492  const DtString& name, DtPortalMessageKind kind );
493 
496 
498  virtual void enableReflectTranslator( bool enabled );
499 
500  virtual DtTenaBroker* tenaBroker();
501  virtual const DtTenaBroker* tenaBroker() const;
502 
504  virtual void shutdown();
505 
506  protected:
507 
510 
511  virtual void initializeTenaCallbacks();
512  virtual void removeTenaCallbacks();
513 
515 
519 
520  static void receiveTenaInteraction( TenaInterType* inter, void* usr );
521 
523 
531 
532  virtual void createInteraction( const PortalInterType& inter );
533  virtual void createPortalInteraction( const TenaInterType& inter );
534 
536 
539  virtual PortalInterType* translate( PortalInterType* destination,
540  const TenaInterType& source ) = 0;
541 
544  virtual TenaInterType* translate( TenaInterType* destination,
545  const PortalInterType& source ) = 0;
546 
548  virtual void printIncomingOutgoingInteractions( const DtPortalInteraction& incoming,
549  const DtInteraction& outgoing ) const;
550 
552  virtual void printIncomingOutgoingInteractions( const DtInteraction& incoming,
553  const DtPortalInteraction& outgoing ) const;
554 
556  virtual const DtGlobalObjectDesignator& convertGlobalId( const DtString& id );
557 
559  virtual const DtString& convertGlobalId( const DtGlobalObjectDesignator& id );
560 
561  virtual void printDumpGuiToText( const PortalInterType& inter );
562  virtual void printDumpGuiToText( const TenaInterType& inter );
563 
564  private:
565 
568 
571 
573  bool operator == ( const DtTenaInteractionTranslator& rightOperand ) const;
574 
576  bool operator != ( const DtTenaInteractionTranslator& rightOperand ) const;
577 
578  };
579 
580  }
581 }
582 
583 #define _tenaTranslator_INL_
584 #include <tenaBroker/tenaTranslator.inl>
585 #undef _tenaTranslator_INL_

Document ID: Generated on Wed Dec 21 15:05:11 EST 2016 from SVN revision 171891
Copyright © 2005-2016 VT MÄK. All Rights Reserved (www.mak.com)