VR-Exchange 2.4 API Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
ddsTrans.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 <ddsBroker/dllExport.h>
18 
21 
24 
25 #include <vlOpenSplice/simpleOM.h>
26 
27 #include <vlutil/vlString.h>
28 
29 // ************************************************************************ //
30 // Use the DIS implementation from VR-Link by temporarily defining DtDIS.
31 // ************************************************************************ //
32 #ifndef DtDIS
33 # define MUST_UNDEF_DTDIS
34 # define DtDIS 1
35 #endif
36 
37 #include <vl/globalObjectDesignator.h>
38 
39 #ifdef MUST_UNDEF_DTDIS
40 # undef DtDIS
41 #endif
42 // ************************************************************************ //
43 
44 #define DDS_TEMPLATE_LIST \
45  template \
46  < class T_PortalObject \
47  , class T_PortalReflectedObject \
48  , class T_DdsReflectedObject \
49  , class T_DdsObjectStateRepository \
50  , class T_DdsObjectPublisher>
51 
52 #define DDS_TEMPLATE_FUNCTION \
53  T_PortalObject, T_PortalReflectedObject, \
54  T_DdsReflectedObject, T_DdsObjectStateRepository, \
55  T_DdsObjectPublisher
56 
57 class DtInteraction;
58 class DtObjectPublisher;
59 class DtStateRepository;
60 
61 namespace MAKVrExchange
62 {
63 
64  class DtRequestTranslationDiagnosticMessage;
65 
66  namespace DtDdsBroker
67  {
68 
69  class DtDdsBroker;
70  class DtReflectedObject;
71 
77  : public DtBaseObjectTranslator<T_PortalObject,T_PortalReflectedObject>
78  {
79  public:
80 
82  typedef enum
83  {
84  none = 0,
85  discover = 1,
86  update = 2,
87  remove = 3
88  } UpdateType;
89 
92 
95 
96  public:
97 
100  const DtString& name, DtPortalMessageKind kind );
101 
103  virtual ~DtDdsObjectTranslator();
104 
106  virtual void enableReflectTranslator( bool enabled );
107 
109  virtual void forceUpdateAll();
110 
112  virtual void tick();
113 
114  virtual DtDdsBroker* ddsBroker();
115  virtual const DtDdsBroker* ddsBroker() const;
116 
118  virtual void shutdown();
119 
120  protected:
121 
124 
125  virtual void initializeDdsCallbacks();
126  virtual void removeDdsCallbacks();
127 
129 
132 
134  virtual DtBrokerObject* createBrokerObject( const DtReflectedObject* refObj );
136 
139  virtual DtBrokerObject* findBrokerObject( const DtReflectedObject* refObj );
140  virtual DtBrokerObject* findBrokerObject( const DtPortalReflectedObject* refObj );
141 
145  virtual DtBrokerObject* releaseBrokerObject( const DtReflectedObject* refObj );
147 
149 
152 
155  static bool ddsDiscoveryCriteria( DtReflectedObject* refObj, void* usr );
156 
158  static void ddsObjectAddedCb( void* refObj, void* usr );
159 
161  static void ddsObjectUpdatedCb( void* refObj, void* usr );
162 
164  static void ddsObjectDeletedCb( void* refObj, void* usr );
165 
167 
170 
174  virtual bool isPortalDiscoverable( const DtPortalReflectedObject* refObj );
175 
178  virtual bool isDdsPublishable( const DtBrokerObject* brokerObj,
179  const T_PortalReflectedObject* refObj );
180 
182 
185 
189  virtual bool isDdsDiscoverable( const T_DdsReflectedObject* reflectedObj );
190 
192 
196 
197  virtual void callObjectDiscoverCallbacks( const DtBrokerObject* obj );
198  virtual void callObjectUpdateCallbacks( const DtBrokerObject* obj );
199  virtual void callObjectRemoveCallbacks( const DtBrokerObject* obj );
200 
202 
210 
211  virtual void discoverDdsObject( T_DdsReflectedObject& refObj );
212  virtual void discoverPortalObject( const T_PortalReflectedObject& refObj );
213 
215 
223 
224  virtual void createDdsPublisher( DtBrokerObject* brokerObj );
225 
231  virtual DtString ddsObjectName( const T_PortalReflectedObject* refObj ) const;
232 
241  virtual T_DdsObjectPublisher* instantiateDdsPublisher(
242  const T_PortalReflectedObject* refObj, const DtString& name );
243 
246  virtual bool performDdsGlobalIdMapping( const T_DdsObjectPublisher* publisher,
247  const T_PortalReflectedObject& refObj );
248 
249  virtual void createPortalPublisher( DtBrokerObject* brokerObj );
250 
256  virtual DtString portalObjectName( const T_DdsReflectedObject* refObj ) const;
257 
260  virtual bool performPortalGlobalIdMapping(
262  const T_DdsReflectedObject& refObj );
263 
265 
274 
275  virtual void receiveDdsUpdate( T_DdsReflectedObject& obj );
276  virtual void receivePortalUpdate( const T_PortalReflectedObject& obj );
277 
279 
288 
289  virtual void updateDdsBrokerObject( DtBrokerObject* brokerObj,
290  const T_DdsObjectStateRepository& sr );
291  virtual void updatePortalBrokerObject( DtBrokerObject* brokerObj,
292  const T_PortalObject& sr );
293 
295 
304  virtual void updateFilteredState( DtBrokerObject* brokerObj,
306  T_DdsReflectedObject* refObj );
307 
312  virtual bool filterLocation( const DtReflectedObject& refObj,
313  const DtVector& location );
314 
318 
319  virtual void removeDdsObject( const DtReflectedObject& refObj );
320  virtual void removePortalObject( const T_PortalReflectedObject& refObj );
321 
323 
328 
329  virtual void deleteDdsPublisher( DtBrokerObject* brokerObj );
330  virtual void deletePortalPublisher( DtBrokerObject* brokerObj );
331 
333 
335  static void requestTransDiagCb( const DtRequestTranslationDiagnosticMessage& msg, void* usr );
336 
339 
341  virtual void printIncomingOutgoingStateReps(
342  const T_PortalObject& incoming, const T_DdsObjectStateRepository& outgoing ) const;
343 
345  virtual void printIncomingOutgoingStateReps(
346  const T_DdsObjectStateRepository& incoming, const T_PortalObject& outgoing ) const;
347 
349  virtual void performPortalDebugging( const T_PortalObject& incoming,
350  const T_DdsObjectStateRepository& outgoing );
351 
353  virtual void performPortalDebugging( const T_DdsObjectStateRepository& incoming,
354  const T_PortalObject& outgoing );
355 
356  virtual void printDumpGuiToText( const DtBrokerObject& brokerObj,
357  UpdateType ut ) const;
358 
360  virtual unsigned int numObjects() const;
361 
362  public:
363 
366  virtual T_PortalObject* translate( T_PortalObject* destination,
367  const T_DdsObjectStateRepository& source,
368  const T_DdsReflectedObject& refObj ) = 0;
369 
372  virtual T_DdsObjectStateRepository* translate(
373  T_DdsObjectStateRepository* destination, const T_PortalObject& source,
374  const T_PortalReflectedObject& refObj ) = 0;
375 
376  private:
377 
380 
383 
385  bool operator == ( const DtDdsObjectTranslator& rightOperand ) const;
386 
388  bool operator != ( const DtDdsObjectTranslator& rightOperand ) const;
389 
390  protected:
391 
392  typedef std::pair<DtTime,bool> LocationFilteringInfo;
393  typedef std::map<const DtReflectedObject*,LocationFilteringInfo> LocationFilteringMap;
395 
396  typedef std::map<const DtReflectedObject*,DtBrokerObject*> DdsToPortalReflectedMap;
397  typedef std::map<const DtPortalReflectedObject*,DtBrokerObject*> PortalToDdsReflectedMap;
398 
401 
402  typedef std::set<DtString> TransDebugObjectNamesSet;
404 
405  };
406 
407 
410  template <typename T_PortalInteraction,typename T_DDSInteraction>
412  : public DtBaseInteractionTranslator<T_PortalInteraction>
413  {
414  public:
415 
418 
419  public:
420 
423  DtPortalMessageKind kind );
424 
426  virtual ~DtDdsInteractionTranslator();
427 
429  virtual void enableReflectTranslator( bool enabled );
430 
431  virtual DtDdsBroker* ddsBroker();
432  virtual const DtDdsBroker* ddsBroker() const;
433 
435  virtual void shutdown();
436 
437  protected:
438 
441 
442  virtual void initializeDdsCallbacks();
443  virtual void removeDdsCallbacks();
444 
446 
450 
451  static void receiveDdsInteraction( void* interaction, void* userData );
452 
454 
462 
463  virtual void createInteraction( const T_PortalInteraction& incoming );
464  virtual void createPortalInteraction( const T_DDSInteraction& incoming );
465 
467 
468 
471  virtual T_PortalInteraction* translate( T_PortalInteraction* destination,
472  const T_DDSInteraction& source ) = 0;
473 
476  virtual T_DDSInteraction* translate( T_DDSInteraction* destination,
477  const T_PortalInteraction& source ) = 0;
478 
480  virtual void printIncomingOutgoingInteractions( const T_PortalInteraction& incoming,
481  const T_DDSInteraction& outgoing ) const;
482 
484  virtual void printIncomingOutgoingInteractions( const T_DDSInteraction& incoming,
485  const T_PortalInteraction& outgoing ) const;
486 
487  virtual void printDumpGuiToText( const DtString& protocol, const DtString& description ) const;
488 
489  virtual void printDDSInteraction( const T_DDSInteraction& inter ) const = 0;
490 
491  private:
492 
495 
498 
500  bool operator == ( const DtDdsInteractionTranslator& rightOperand ) const;
501 
503  bool operator != ( const DtDdsInteractionTranslator& rightOperand ) const;
504 
505  };
506 
507  }
508 }
509 
510 #include <ddsBroker/ddsTrans.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)