VR-Exchange 2.5 API Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
ddsTranslator.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 <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 
144  virtual DtBrokerObject* findBrokerObject( const DtString& objectName );
145 
149  virtual DtBrokerObject* releaseBrokerObject( const DtReflectedObject* refObj );
151 
153 
156 
159  static bool ddsDiscoveryCriteria( DtReflectedObject* refObj, void* usr );
160 
162  static void ddsObjectAddedCb( void* refObj, void* usr );
163 
165  static void ddsObjectUpdatedCb( void* refObj, void* usr );
166 
168  static void ddsObjectDeletedCb( void* refObj, void* usr );
169 
171 
174 
178  virtual bool isPortalDiscoverable( const DtPortalReflectedObject* refObj );
179 
182  virtual bool isDdsPublishable( DtBrokerObject* brokerObj,
183  const T_PortalReflectedObject* refObj );
184 
186 
189 
193  virtual bool isDdsDiscoverable( const T_DdsReflectedObject* reflectedObj );
194 
196 
200 
201  virtual void callObjectDiscoverCallbacks( const DtBrokerObject* obj );
202  virtual void callObjectUpdateCallbacks( const DtBrokerObject* obj );
203  virtual void callObjectRemoveCallbacks( const DtBrokerObject* obj );
204 
206 
214 
215  virtual void discoverDdsObject( T_DdsReflectedObject& refObj );
216  virtual void discoverPortalObject( const T_PortalReflectedObject& refObj );
217 
219 
227 
228  virtual void createDdsPublisher( DtBrokerObject* brokerObj );
229 
235  virtual DtString ddsObjectName( const T_PortalReflectedObject* refObj ) const;
236 
245  virtual T_DdsObjectPublisher* instantiateDdsPublisher(
246  const T_PortalReflectedObject* refObj, const DtString& name );
247 
250  virtual bool performDdsGlobalIdMapping( const T_DdsObjectPublisher* publisher,
251  const T_PortalReflectedObject& refObj );
252 
253  virtual void createPortalPublisher( DtBrokerObject* brokerObj );
254 
260  virtual DtString portalObjectName( const T_DdsReflectedObject* refObj ) const;
261 
264  virtual bool performPortalGlobalIdMapping(
266  const T_DdsReflectedObject& refObj );
267 
269 
278 
279  virtual void receiveDdsUpdate( T_DdsReflectedObject& obj );
280  virtual void receivePortalUpdate( const T_PortalReflectedObject& obj );
281 
283 
292 
293  virtual void updateDdsBrokerObject( DtBrokerObject* brokerObj,
294  const T_DdsObjectStateRepository& sr );
295  virtual void updatePortalBrokerObject( DtBrokerObject* brokerObj,
296  const T_PortalObject& sr );
297 
299 
308  virtual void updateFilteredState( DtBrokerObject* brokerObj,
310  T_DdsReflectedObject* refObj );
311 
316  virtual bool filterLocation( const DtReflectedObject& refObj,
317  const DtVector& location );
318 
322 
323  virtual void removeDdsObject( const DtReflectedObject& refObj );
324  virtual void removePortalObject( const T_PortalReflectedObject& refObj );
325 
327 
332 
333  virtual void deleteDdsPublisher( DtBrokerObject* brokerObj );
334  virtual void deletePortalPublisher( DtBrokerObject* brokerObj );
335 
337 
339  static void requestTransDiagCb( const DtRequestTranslationDiagnosticMessage& msg, void* usr );
340 
343 
345  virtual void printIncomingOutgoingStateReps(
346  const T_PortalObject& incoming, const T_DdsObjectStateRepository& outgoing ) const;
347 
349  virtual void printIncomingOutgoingStateReps(
350  const T_DdsObjectStateRepository& incoming, const T_PortalObject& outgoing ) const;
351 
355  virtual void performPortalDebugging( const DtString& objectName );
356 
358  virtual void performPortalDebugging( const T_PortalObject& incoming,
359  const T_DdsObjectStateRepository& outgoing );
360 
362  virtual void performPortalDebugging( const T_DdsObjectStateRepository& incoming,
363  const T_PortalObject& outgoing );
364 
365  virtual void printDumpGuiToText( const DtBrokerObject& brokerObj,
366  UpdateType ut ) const;
367 
369  virtual unsigned int numObjects() const;
370 
371  public:
372 
375  virtual T_PortalObject* translate( T_PortalObject* destination,
376  const T_DdsObjectStateRepository& source,
377  const T_DdsReflectedObject& refObj ) = 0;
378 
381  virtual T_DdsObjectStateRepository* translate(
382  T_DdsObjectStateRepository* destination, const T_PortalObject& source,
383  const T_PortalReflectedObject& refObj ) = 0;
384 
385  private:
386 
389 
392 
394  bool operator == ( const DtDdsObjectTranslator& rightOperand ) const;
395 
397  bool operator != ( const DtDdsObjectTranslator& rightOperand ) const;
398 
399  protected:
400 
401  typedef std::pair<DtTime,bool> LocationFilteringInfo;
402  typedef std::map<const DtReflectedObject*,LocationFilteringInfo> LocationFilteringMap;
404 
405  typedef std::map<const DtReflectedObject*,DtBrokerObject*> DdsToPortalReflectedMap;
406  typedef std::map<const DtPortalReflectedObject*,DtBrokerObject*> PortalToDdsReflectedMap;
407 
410 
411  typedef std::set<DtString> TransDebugObjectNamesSet;
413 
414  };
415 
416 
419  template <typename T_PortalInteraction,typename T_DDSInteraction>
421  : public DtBaseInteractionTranslator<T_PortalInteraction>
422  {
423  public:
424 
427 
428  public:
429 
432  DtPortalMessageKind kind );
433 
435  virtual ~DtDdsInteractionTranslator();
436 
438  virtual void enableReflectTranslator( bool enabled );
439 
440  virtual DtDdsBroker* ddsBroker();
441  virtual const DtDdsBroker* ddsBroker() const;
442 
444  virtual void shutdown();
445 
446  protected:
447 
450 
451  virtual void initializeDdsCallbacks();
452  virtual void removeDdsCallbacks();
453 
455 
459 
460  static void receiveDdsInteraction( void* interaction, void* userData );
461 
463 
471 
472  virtual void createInteraction( const T_PortalInteraction& incoming );
473  virtual void createPortalInteraction( const T_DDSInteraction& incoming );
474 
476 
477 
480  virtual T_PortalInteraction* translate( T_PortalInteraction* destination,
481  const T_DDSInteraction& source ) = 0;
482 
485  virtual T_DDSInteraction* translate( T_DDSInteraction* destination,
486  const T_PortalInteraction& source ) = 0;
487 
489  virtual void printIncomingOutgoingInteractions( const T_PortalInteraction& incoming,
490  const T_DDSInteraction& outgoing ) const;
491 
493  virtual void printIncomingOutgoingInteractions( const T_DDSInteraction& incoming,
494  const T_PortalInteraction& outgoing ) const;
495 
496  virtual void printDumpGuiToText( const DtString& protocol, const DtString& description ) const;
497 
498  virtual void printDDSInteraction( const T_DDSInteraction& inter ) const = 0;
499 
500  private:
501 
504 
507 
509  bool operator == ( const DtDdsInteractionTranslator& rightOperand ) const;
510 
512  bool operator != ( const DtDdsInteractionTranslator& rightOperand ) const;
513 
514  };
515 
516  }
517 }
518 
519 #define _ddsTranslator_INL_
520 #include <ddsBroker/ddsTranslator.inl>
521 #undef _ddsTranslator_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)