VR-Exchange 2.4 API Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
tenaTrans.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 <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 
161  virtual DtBrokerObject* releaseBrokerObject( const DtReflectedObject* refObj );
163 
165 
168 
171  static bool tenaDiscoveryCriteria( DtReflectedObject* refObj, void* usr );
172 
174  static void tenaObjectAddedCb( T_TenaReflectedObject* refObj, void* usr );
175 
177  static void tenaObjectUpdatedCb( T_TenaReflectedObject* refObj, void* usr );
178 
180  static void tenaObjectDeletedCb( T_TenaReflectedObject* refObj, void* usr );
181 
183 
186 
189  virtual bool isPortalDiscoverable( const DtPortalReflectedObject* refObj );
190 
193  virtual bool isTenaPublishable( const DtBrokerObject* brokerObj,
194  const T_PortalReflectedObject* refObj );
195 
197 
200 
203  virtual bool isTenaDiscoverable( const DtReflectedObject* refObj );
204 
206 
210 
211  virtual void callObjectDiscoverCallbacks( const DtBrokerObject* obj );
212  virtual void callObjectUpdateCallbacks( const DtBrokerObject* obj );
213  virtual void callObjectRemoveCallbacks( const DtBrokerObject* obj );
214 
216 
225 
226  virtual void discoverTenaObject( T_TenaReflectedObject& obj );
227  virtual void discoverPortalObject( const T_PortalReflectedObject& obj );
228 
230 
238 
239  virtual void createTenaPublisher( DtBrokerObject* brokerObj );
240 
246  virtual DtString tenaObjectName( const T_PortalReflectedObject* refObj ) const;
247 
249  virtual DtEntityIdentifier mapIdentifier( const T_PortalReflectedObject* refObj,
250  const DtString& identifier );
251 
253  virtual DtEntityIdentifier mapObjectId( const DtEntityIdentifier& identifier );
254 
263  virtual DtObjectPublisher* instantiateTenaPublisher(
264  const T_PortalReflectedObject* refObj, const DtEntityIdentifier& name );
265 
270  virtual bool performTenaGlobalIdMapping( const DtObjectPublisher* publisher,
271  const T_PortalReflectedObject& refObj,
273  int systemId = DtGlobalIdMapper::NoSystemId,
274  int beamId = DtGlobalIdMapper::NoBeamId );
275 
276  virtual void createPortalPublisher( DtBrokerObject* brokerObj );
277 
283  virtual DtString portalObjectName( const T_TenaReflectedObject* refObj ) const;
284 
289  virtual bool performPortalGlobalIdMapping(
291  const T_TenaReflectedObject& refObj,
293  int systemId = DtGlobalIdMapper::NoSystemId,
294  int beamId = DtGlobalIdMapper::NoBeamId );
295 
297 
306 
307  virtual void receiveTenaUpdate( T_TenaReflectedObject& obj );
308  virtual void receivePortalUpdate( const T_PortalReflectedObject& obj );
309 
311 
320 
321  virtual void updateTenaBrokerObject( DtBrokerObject* brokerObj,
322  const T_TenaObjectStateRepository& sr );
323  virtual void updatePortalBrokerObject( DtBrokerObject* brokerObj,
324  const T_PortalObject& sr );
325 
327 
336  virtual void updateFilteredState( DtBrokerObject* brokerObj,
338  T_TenaReflectedObject* refObj );
339 
344  virtual bool filterLocation( const DtReflectedObject& refObj,
345  const DtVector& location );
346 
350 
351  virtual void removeTenaObject( const DtReflectedObject& refObj );
352  virtual void removePortalObject( const T_PortalReflectedObject& refObj );
353 
355 
360 
361  virtual void deleteTenaPublisher( DtBrokerObject* brokerObj );
362  virtual void deletePortalPublisher( DtBrokerObject* brokerObj );
363 
365 
367  virtual const DtGlobalObjectDesignator& convertGlobalId( const DtString& id );
368 
370  virtual const DtString& convertGlobalId( const DtGlobalObjectDesignator& id );
371 
373  virtual bool isEntityIdentifierValid( const DtEntityIdentifier& entityId ) const;
374 
376  static void requestTransDiagCb( const DtRequestTranslationDiagnosticMessage& msg, void* usr );
377 
380 
382  virtual void printIncomingOutgoingStateReps(
383  const DtPortalObject& incoming, const DtStateRepository& outgoing ) const;
384 
386  virtual void printIncomingOutgoingStateReps(
387  const DtStateRepository& incoming, const DtPortalObject& outgoing ) const;
388 
390  virtual void performPortalDebugging( const DtPortalObject& incoming,
391  const DtStateRepository& outgoing );
392 
394  virtual void performPortalDebugging( const DtStateRepository& incoming,
395  const DtPortalObject& outgoing );
396 
397  virtual void printDumpGuiToText( const DtBrokerObject& brokerObj,
398  UpdateType ut ) const;
399 
401  virtual unsigned int numObjects() const;
402 
403  public:
404 
407  virtual T_PortalObject* translate( T_PortalObject* destination,
408  const T_TenaObjectStateRepository& source,
409  const T_TenaReflectedObject& refObj ) = 0;
410 
413  virtual T_TenaObjectStateRepository* translate(
414  T_TenaObjectStateRepository* destination, const T_PortalObject& source,
415  const T_PortalReflectedObject& refObj ) = 0;
416 
417  private:
418 
421 
424 
426  bool operator == ( const DtTenaObjectTranslator& rightOperand ) const;
427 
429  bool operator != ( const DtTenaObjectTranslator& rightOperand ) const;
430 
431  protected:
432 
433  T_TenaReflectedObjectList* myTenaReflectedList;
434 
435  typedef std::pair<DtTime,bool> LocationFilteringInfo;
436  typedef std::map<const DtReflectedObject*,LocationFilteringInfo> LocationFilteringMap;
438 
439  typedef std::map<const DtReflectedObject*,DtBrokerObject*> TenaToPortalReflectedMap;
440  typedef std::map<const DtPortalReflectedObject*,DtBrokerObject*> PortalToTenaReflectedMap;
441 
444 
445  typedef std::set<DtString> TransDebugObjectNamesSet;
447 
448  };
449 
450 
467  template <class PortalInterType,class TenaInterType>
469  : public DtBaseInteractionTranslator<PortalInterType>
470  {
471  public:
472 
475 
478 
479  public:
480 
483  const DtString& name, DtPortalMessageKind kind );
484 
487 
489  virtual void enableReflectTranslator( bool enabled );
490 
491  virtual DtTenaBroker* tenaBroker();
492  virtual const DtTenaBroker* tenaBroker() const;
493 
495  virtual void shutdown();
496 
497  protected:
498 
501 
502  virtual void initializeTenaCallbacks();
503  virtual void removeTenaCallbacks();
504 
506 
510 
511  static void receiveTenaInteraction( TenaInterType* inter, void* usr );
512 
514 
522 
523  virtual void createInteraction( const PortalInterType& inter );
524  virtual void createPortalInteraction( const TenaInterType& inter );
525 
527 
530  virtual PortalInterType* translate( PortalInterType* destination,
531  const TenaInterType& source ) = 0;
532 
535  virtual TenaInterType* translate( TenaInterType* destination,
536  const PortalInterType& source ) = 0;
537 
539  virtual void printIncomingOutgoingInteractions( const DtPortalInteraction& incoming,
540  const DtInteraction& outgoing ) const;
541 
543  virtual void printIncomingOutgoingInteractions( const DtInteraction& incoming,
544  const DtPortalInteraction& outgoing ) const;
545 
547  virtual const DtGlobalObjectDesignator& convertGlobalId( const DtString& id );
548 
550  virtual const DtString& convertGlobalId( const DtGlobalObjectDesignator& id );
551 
552  virtual void printDumpGuiToText( const PortalInterType& inter );
553  virtual void printDumpGuiToText( const TenaInterType& inter );
554 
555  private:
556 
559 
562 
564  bool operator == ( const DtTenaInteractionTranslator& rightOperand ) const;
565 
567  bool operator != ( const DtTenaInteractionTranslator& rightOperand ) const;
568 
569  };
570 
571  }
572 }
573 
574 #define tenaTrans_INL_
575 #include "tenaTrans.inl"
576 #undef tenaTrans_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)