VR-Exchange 2.2 API Documentation
tenaBroker/libTenaBroker/objectTrans.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 <broker/translator.h>
13 
14 #include <vl/globalObjDes.h>
15 
16 #include <list>
17 #include <set>
18 #include <map>
19 
20 class DtReflectedObject;
21 class DtStateRepository;
22 
23 namespace MAKVrExchange
24 {
25 
26  class DtPortalObject;
27  class DtPortalReflectedObject;
28  class DtRequestTranslationDiagnosticMessage;
29 
30  namespace DtTenaBroker
31  {
32 
33  class DtTenaBroker;
34  class DtBrokerObject;
35 
40  class DT_DLL_TENABROKER DtObjectTranslator : public DtTranslator
41  {
42  public:
43 
45  typedef enum
46  {
47  none = 0,
48  discover = 1,
49  update = 2,
50  remove = 3
51  } UpdateType;
52 
53  typedef void (*BrokerObjectCbPtr)
54  ( const DtBrokerObject *brokerObjectPointer,
55  void *userData);
56 
57  public:
58 
60  DtObjectTranslator( DtTenaBroker* broker, const DtString& name,
61  DtPortalMessageKind kind );
62 
64  virtual ~DtObjectTranslator();
65 
68  virtual DtBrokerObject *releaseBrokerObject(
69  const DtReflectedObject* reflectedObj);
70  virtual DtBrokerObject *releaseBrokerObject(
71  const DtPortalReflectedObject* reflectedObj);
72 
76  virtual DtBrokerObject *findBrokerObject(
77  const DtReflectedObject* reflectedObj);
78  virtual DtBrokerObject *findBrokerObject(
79  const DtPortalReflectedObject* reflectedObj);
80 
83  virtual DtBrokerObject *createBrokerObject(
84  const DtReflectedObject* reflectedObj);
85  virtual DtBrokerObject *createBrokerObject(
86  const DtPortalReflectedObject* reflectedObj);
87 
91  virtual bool isTenaDiscoverable( const DtReflectedObject* reflectedObj );
92 
96  virtual bool isPortalDiscoverable( const DtPortalReflectedObject* reflectedObj );
97 
99  virtual void removeTenaObject( const DtReflectedObject* reflectedObj );
100 
103  virtual void tick() = 0;
104 
105  virtual void printIncomingOutgoingStateReps(
106  const DtPortalObject& incoming, const DtStateRepository& outgoing );
107 
108  virtual void printIncomingOutgoingStateReps(
109  const DtStateRepository& incoming, const DtPortalObject& outgoing );
110 
111  virtual void performPortalDebugging( const DtPortalObject& incoming,
112  const DtStateRepository& outgoing );
113 
114  virtual void performPortalDebugging( const DtStateRepository& incoming,
115  const DtPortalObject& outgoing );
116 
117  virtual void addObjectDiscoveredCallback(
118  BrokerObjectCbPtr funcPtr, void *userData);
119 
120  virtual void addObjectUpdatedCallback(
121  BrokerObjectCbPtr funcPtr, void *userData);
122 
123  virtual void addObjectRemovedCallback(
124  BrokerObjectCbPtr funcPtr, void *userData);
125 
126 
127  virtual bool printDumpGuiToText( const UpdateType action,
128  const DtBrokerObject& brokerObject ) const;
129 
131  virtual unsigned int numObjects() const;
132 
133  protected:
134 
136  static void requestTransDiagCb( const DtRequestTranslationDiagnosticMessage& msg, void* usr );
137 
139  virtual void requestTransDiagCb( const DtRequestTranslationDiagnosticMessage& msg );
140 
142  virtual void callObjectDiscoverCallbacks( const DtBrokerObject* brokerObject );
143 
145  virtual void callObjectUpdateCallbacks( const DtBrokerObject* brokerObject );
146 
148  virtual void callObjectRemoveCallbacks( const DtBrokerObject* brokerObject );
149 
151  virtual void createPortalPublisher( DtBrokerObject* brokerObject ) = 0;
152  virtual void createTenaPublisher( DtBrokerObject* brokerObject ) = 0;
153 
156  virtual void deletePortalPublisher( DtBrokerObject* brokerObject ) = 0;
157  virtual void deleteTenaPublisher( DtBrokerObject* brokerObject ) = 0;
158 
162  virtual bool isPortalPublishable( const DtBrokerObject* brokerObject ) const = 0;
163 
168  virtual bool isTenaPublishable( const DtBrokerObject* brokerObject ) const = 0;
169 
171  virtual void removePortalObject( const DtPortalReflectedObject* reflectedObj );
172 
174  virtual const DtGlobalObjectDesignator& convertGlobalId( const DtString& id ) const;
175 
177  virtual const DtString& convertGlobalId( const DtGlobalObjectDesignator& id ) const;
178 
190  inline bool isEntityIdentifierValid( const DtEntityIdentifier& entityId ) const
191  {
192  return ((entityId.site() != 0) &&
193  (entityId.host() != 0) &&
194  (entityId.entityNum() != 0));
195  }
196 
197  private:
198 
200  DtObjectTranslator( const DtObjectTranslator& other );
201 
203  DtObjectTranslator& operator = ( const DtObjectTranslator& other );
204 
206  bool operator == ( const DtObjectTranslator& );
207 
209  bool operator != ( const DtObjectTranslator& );
210 
211  protected:
212 
213  typedef std::map<const DtReflectedObject*, DtBrokerObject *>
215  typedef std::map<const DtPortalReflectedObject*, DtBrokerObject *>
217 
218  struct CallbackPair { BrokerObjectCbPtr fcn; void *userData; };
219  typedef std::list<CallbackPair> CallbackPairList;
220 
221  typedef std::set<DtString> TransDebugObjectNamesSet;
223 
227 
230 
232 
233  };
234 
235  }
236 }

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)