VR-Exchange 2.4 API Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
broker.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 #include <broker/filterManager.h>
18 
19 #include <portal/pControlMessage.h>
20 
21 #include <vlutil/vlStringUtil.h>
22 #include <vlutil/vlString.h>
23 #include <vlutil/vlTime.h>
24 
25 #ifdef __linux__
26 #include <sys/file.h>
27 #endif
28 
29 #include <map>
30 
31 class DtPrinter;
32 class DtDynamicLibrary;
33 
34 namespace MAKVrExchange
35 {
36 
37  class DtPortalConnection;
38  class DtStatisticsManager;
39 
54  {
55  public:
56 
57  typedef bool (*PluginInitMethod)( DtBroker* );
58  typedef void (*PluginReloadMethod)();
59 
60  typedef void (*BrokerReloadCallback)( void* );
61 
64 
65  protected:
66 
68  DtBroker();
69 
72  virtual void initialize( DtBrokerInitializer* init );
73 
75  virtual void logBrokerSettings( DtBrokerInitializer* init );
76 
77  public:
78 
80  virtual ~DtBroker();
81 
83  virtual DtPortalConnection* portalConnection() const;
84 
86  virtual void initializeUi( DtGenericUserInterface* ui );
87 
90  virtual void launchGui();
91 
95  virtual void launchInfoGui();
96 
98  virtual DtInteractionTranslatorFactory* interactionTranslatorFactory();
99 
101  virtual DtObjectTranslatorFactory* objectTranslatorFactory();
102 
104  virtual void reloadTranslatorDebugging();
105 
107  virtual void reloadBrokerSettings();
108 
110  virtual void reloadBrokerPlugins();
111 
113  virtual const DtString brokerName() const;
114 
116  virtual DtU16 brokerId() const;
117 
120  virtual DtTime simTime() const;
121 
123  virtual void updateSimTime() const;
124 
126  virtual bool isTimeToQuit() const;
127 
137  virtual bool isTranslatorDebuggingOn( const DtString& name ) const;
138 
148  virtual bool isTranslatorDisabled( const DtString& name ) const;
149 
151  virtual DtTime pollingInterval();
152 
154  virtual DtBrokerInitializer* brokerInitializer() const;
155 
157  // brokers should override to do any periodic processing on the reflection side.
158  virtual void tick();
159 
161  virtual void processEvents();
162 
164  virtual DtFilterManager& objectFilters();
165 
167  virtual const DtFilterManager& objectFilters() const;
168 
173  virtual void setBrokerId( int id );
174 
176  virtual void shutdownWithError( const DtString & error );
177 
179  virtual DtObjectTranslator* getObjectTranslator( const DtString& name );
180 
182  virtual DtInteractionTranslator* getInteractionTranslator( const DtString& name );
183 
186  virtual void loadTranslators();
187 
189  virtual void initializeTranslators( DtStringSet& failedTranslators );
190 
193  virtual void loadKnownObjectTranslators( DtStringSet& failedTranslators );
194 
197  virtual void loadKnownInteractionTranslators( DtStringSet& failedTranslators );
198 
202  virtual bool loadObjectTranslator( const DtString& translatorName );
203 
207  virtual bool loadInteractionTranslator( const DtString& translatorName );
208 
210  virtual void shutdownTranslators();
211 
213  virtual void addBrokerReloadCallback( BrokerReloadCallback cb, void* usr );
214 
216  virtual void callBrokerReloadCallbacks();
217 
218  protected:
219 
222  virtual void initializeDebuggedAndDisabledFromInit();
223 
225  virtual void initFileLogging( const DtString& logFileName );
226 
228  virtual void obtainLock();
229 
231  virtual void loadBrokerPlugins();
232 
234  virtual void getLibrariesInDir( const std::string& dir,
235  std::list<std::string>& files ) const;
236 
238  virtual void initPortalConnection( const DtBrokerInitializer& init );
239 
241  virtual void initStatisticsManager( const DtBrokerInitializer& init );
242 
244  virtual void stopFileLogging();
245 
248  virtual void processShutdownRequest(const DtPortalBrokerShutdownRequestMessage& obj);
249 
251  virtual void processRestartRequest( bool shouldEnableOneToOne );
252 
254  static void shutdownRequestCb( const DtPortalBrokerShutdownRequestMessage& obj, void* usr );
255 
257  static void processDisableOneToOneCb( const DtPortalBrokerDisableOneToOneMessage& msg, void* usr );
258 
260  static void processEnableOneToOneCb( const DtPortalBrokerEnableOneToOneMessage& msg, void* usr );
261 
263  static void launchGuiRequestCb( const DtBrokerLaunchGuiRequest& obj, void* usr );
264 
267 
270  static void filterObjectCallback( const DtFilterObjectMessage& object, void* userData );
271 
275  virtual void filterObjectCallback( const DtFilterObjectMessage& object );
276 
278 
284  virtual void reportLoadTranslatorFailures( const DtStringSet& failedTranslators ) const;
285 
286  protected:
287 
288  static void objectDiscoveredCallback( const DtBrokerObject* brokerObject, void* usr );
289  static void objectUpdatedCallback( const DtBrokerObject* brokerObject, void* usr );
290  static void objectRemovedCallback( const DtBrokerObject* brokerObject, void* usr );
291 
292 
294  virtual void objectDiscovered( const DtBrokerObject* brokerObject );
295 
297  virtual void objectUpdated( const DtBrokerObject* brokerObject );
298 
300  virtual void objectRemoved( const DtBrokerObject* brokerObject );
301 
303  virtual bool addTranslator( DtInteractionTranslator* intTrans, bool reflectEnabled, bool publishEnabled );
304 
306  virtual bool addTranslator( DtObjectTranslator* objTrans, bool reflectEnabled, bool publishEnabled );
307 
308  private:
309 
311  DtBroker( const DtBroker& other );
312 
314  DtBroker& operator = ( const DtBroker& other );
315 
316  protected:
317 
318  static const char* theVrxPluginInitMethod;
319  static const char* theVrxPluginReloadMethod;
320 
321  typedef std::map<const DtString,DtInteractionTranslator*> NamedInteractionTranslatorMap;
322  typedef std::map<const DtString,DtObjectTranslator*> NamedObjectTranslatorMap;
325 
328 
329  typedef std::map<std::string,DtDynamicLibrary*> BrokerPluginsMap;
331 
332  struct CallbackPair { BrokerReloadCallback fcn; void* usr; };
333  typedef std::list<CallbackPair> CallbackPairList;
335 
337 
338  DtU16 myBrokerId;
341 
343 
344  std::set<DtString> myDisabledTranslators;
345  std::set<DtString> myDebuggedTranslators;
346 
349  DtPrinter* myFilePrinter;
350 #ifdef _WIN32
351  HANDLE myMutexOneAppHandle;
352 #endif
353  // this section defines variables used for lock files in Linux
354 #ifdef __linux__
355  DtString lockFilename;
356  struct flock lock;
357  int lockFileDes;
358 #endif
359 
360  };
361 
362 
363  //
364  // Inline method definitions.
365  //
366 
368  {
369  return myBrokerInitializer;
370  }
371 
373  {
374  return myFilterManager;
375  }
376 
378  {
379  return myFilterManager;
380  }
381 
383  {
385  }
386 
387  inline const DtString DtBroker::brokerName() const
388  {
390  }
391 
392 }

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)