VR-Exchange 2.2 API Documentation
rprTrans.h
Go to the documentation of this file.
1 /****************************************************************************
2  * Copyright (c) 2013 VT MAK
3  * All rights reserved.
4  ****************************************************************************/
5 
9 
10 #pragma once
11 
12 #include "objectTrans.h"
13 #include "interactionTrans.h"
14 
17 
18 // All HLA Translators must have the following template arguments:
19 // The integer define of the DtPortalMessageKind,
20 // The PortalObject this message translates,
21 // The Reflected Portal Object class the message translates
22 // The Reflected HLA Object class
23 // The reflected list of objects
24 // The state repository class of the HLA Object
25 // The publisher class of the HLA Object
26 #define HLA_TEMPLATE_LIST \
27  template \
28  < class T_PortalObject \
29  , class T_PortalReflectedObject \
30  , class T_HlaReflectedObject \
31  , class T_HlaReflectedObjectList \
32  , class T_HlaObjectStateRepository \
33  , class T_HlaObjectPublisher>
34 
35 #define HLA_TEMPLATE_FUNCTION \
36  T_PortalObject, T_PortalReflectedObject, \
37  T_HlaReflectedObject, T_HlaReflectedObjectList, \
38  T_HlaObjectStateRepository, T_HlaObjectPublisher
39 
40 namespace MAKVrExchange
41 {
42 
43  namespace DtRprBroker
44  {
45 
70  {
71  public:
72 
75 
76  public:
77 
80  const DtString& name, DtPortalMessageKind kind );
81 
83  virtual ~DtRprObjectTranslator();
84 
86  virtual void enableTranslator( bool enabled );
87 
89  virtual void tick();
90 
91  protected:
92 
95 
98  static bool hlaDiscoveryCriteria( DtReflectedObject* reflectedObj, void* usr );
99 
101  static void hlaObjectAddedCb( T_HlaReflectedObject* obj, void* usr );
102 
104  static void hlaObjectUpdatedCb( T_HlaReflectedObject* obj, void* usr );
105 
107  static void hlaObjectDeletedCb( T_HlaReflectedObject* obj, void* usr );
108 
110 
113 
116  static bool portalDiscoveryCriteria( const DtPortalReflectedObject* object, void* usr );
117 
119  static void portalObjectAddedCb( const T_PortalReflectedObject& obj, void* usr );
120 
122  static void portalObjectUpdatedCb( const T_PortalReflectedObject& obj, void* usr );
123 
125  static void portalObjectDeletedCb( const T_PortalReflectedObject& obj, void* usr );
126 
128 
134  virtual bool isHlaPublishable( const DtBrokerObject* brokerObject ) const;
135 
138  virtual bool isPortalPublishable( const DtBrokerObject* brokerObject ) const;
139 
143  virtual bool isDiscoverable( const DtBrokerObject* brokerObj,
144  const T_PortalReflectedObject* refObj ) const;
145 
154 
155  virtual void discoverHlaObject( T_HlaReflectedObject* obj );
156  virtual void discoverPortalObject( const T_PortalReflectedObject& obj );
157 
159 
167 
168  virtual void createHlaPublisher( DtBrokerObject* brokerObject );
169  virtual void createPortalPublisher( DtBrokerObject* brokerObject );
170 
172 
178  virtual DtString hlaObjectName( const T_PortalReflectedObject* refObj );
179 
188  virtual T_HlaObjectPublisher* instantiateHlaPublisher(
189  const T_PortalReflectedObject* refObj, const DtString& name );
190 
196  virtual void fillOutgoingIds( T_HlaObjectPublisher* publisher,
197  const DtString& name );
198 
207 
208  virtual void receiveHlaUpdate( T_HlaReflectedObject* obj );
209  virtual void receivePortalUpdate( const T_PortalReflectedObject& obj );
210 
212 
221 
222  virtual void updateHlaBrokerObject( DtBrokerObject* brokerObj,
223  const T_HlaObjectStateRepository& sr );
224  virtual void updatePortalBrokerObject( DtBrokerObject* brokerObj,
225  const T_PortalObject& sr );
226 
228 
237  virtual void updateFilteredState( DtBrokerObject* brokerObj,
239  T_HlaReflectedObject* refObj );
240 
245 
246  virtual void deleteHlaPublisher( DtBrokerObject* brokerObject );
247  virtual void deletePortalPublisher( DtBrokerObject* brokerObject );
248 
250 
251  public:
252 
255  virtual T_PortalObject* translate( T_PortalObject* destination,
256  const T_HlaObjectStateRepository& source,
257  const T_HlaReflectedObject& reflectedObject ) = 0;
258 
261  virtual T_HlaObjectStateRepository* translate(
262  T_HlaObjectStateRepository* destination, const T_PortalObject& source,
263  const T_PortalReflectedObject& reflectedObject ) = 0;
264 
265  private:
266 
269 
272 
274  bool operator == ( const DtRprObjectTranslator& rightOperand ) const;
275 
277  bool operator != ( const DtRprObjectTranslator& rightOperand ) const;
278 
279  protected:
280 
281  T_HlaReflectedObjectList* myHlaReflectedList;
283 
284  };
285 
286 
287 
304 
305  // All HLA Translators must have the following template arguments:
306  // The Portal Interaction class the message translates
307  // The HLA Interaction class
308  template <class PortalInterType, class HlaInterType>
310  {
311  public:
312 
315 
316  public:
317 
320  const DtString& name, DtPortalMessageKind kind );
321 
323  virtual ~DtRprInteractionTranslator();
324 
326  virtual void enableTranslator( bool enabled );
327 
328  protected:
329 
333 
334  static void receiveHlaInteraction( HlaInterType* inter, void* usr );
335  static void receivePortalInteraction( const PortalInterType& inter, void* usr );
336 
338 
346 
347  virtual void createHlaInteraction( const PortalInterType& inter );
348  virtual void createPortalInteraction( const HlaInterType& inter );
349 
350  public:
351 
354  virtual PortalInterType* translate( PortalInterType* destination,
355  const HlaInterType& source ) = 0;
356 
359  virtual HlaInterType* translate( HlaInterType* destination,
360  const PortalInterType& source ) = 0;
361 
362  private:
363 
366 
369 
371  bool operator == ( const DtRprInteractionTranslator& rightOperand ) const;
372 
374  bool operator != ( const DtRprInteractionTranslator& rightOperand ) const;
375 
376  };
377 
378  }
379 }
380 
381 #define hlaTranslator_INL_
382 #include "rprTrans.inl"
383 #undef hlaTranslator_INL_

Document ID: Generated on Mon Apr 15 17:15:50 EDT 2013 from SVN revision 126154
Copyright © 2005-2012 VT MÄK. All Rights Reserved (www.mak.com)