VR-Exchange 2.5 API Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
broker.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 #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 DtFilePrinter;
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)( DtBroker* );
59  typedef void (*PluginPostInitMethod)( DtBroker* );
60 
61  typedef void (*BrokerReloadCallback)( void* );
62 
65 
66  protected:
67 
69  DtBroker();
70 
73  virtual void initialize( DtBrokerInitializer* init );
74 
76  virtual void initialize();
77 
79  virtual void logBrokerSettings( DtBrokerInitializer* init );
80 
81  public:
82 
84  virtual ~DtBroker();
85 
87  virtual DtPortalConnection* portalConnection() const;
88 
90  virtual void initializeUi( DtGenericUserInterface* ui );
91 
94  virtual void startBroker();
95 
97  virtual void launchGui();
98 
102  virtual void launchInfoGui();
103 
105  virtual DtInteractionTranslatorFactory* interactionTranslatorFactory();
106 
108  virtual DtObjectTranslatorFactory* objectTranslatorFactory();
109 
111  virtual void reloadTranslatorDebugging();
112 
114  virtual void reloadBrokerSettings();
115 
117  virtual const DtString brokerName() const;
118 
120  virtual DtU16 brokerId() const;
121 
124  virtual DtTime simTime() const;
125 
127  virtual void updateSimTime() const;
128 
130  virtual bool isRunning() const;
131 
133  virtual bool isTimeToQuit() const;
134 
144  virtual bool isTranslatorDebuggingOn( const DtString& name ) const;
145 
155  virtual bool isTranslatorDisabled( const DtString& name ) const;
156 
158  virtual DtTime pollingInterval();
159 
161  virtual DtBrokerInitializer* brokerInitializer() const;
162 
164  // brokers should override to do any periodic processing on the reflection side.
165  virtual void tick();
166 
168  virtual void processEvents();
169 
171  virtual DtFilterManager& objectFilters();
172 
174  virtual const DtFilterManager& objectFilters() const;
175 
180  virtual void setBrokerId( int id );
181 
183  virtual void shutdownWithError( const DtString & error );
184 
186  virtual DtObjectTranslator* getObjectTranslator( const DtString& name );
187 
189  virtual DtInteractionTranslator* getInteractionTranslator( const DtString& name );
190 
193  virtual void loadTranslators();
194 
196  virtual void initializeTranslators( DtStringSet& failedTranslators );
197 
200  virtual void loadKnownObjectTranslators( DtStringSet& failedTranslators );
201 
204  virtual void loadKnownInteractionTranslators( DtStringSet& failedTranslators );
205 
209  virtual bool loadObjectTranslator( const DtString& translatorName );
210 
214  virtual bool loadInteractionTranslator( const DtString& translatorName );
215 
218  virtual void shutdown();
219 
221  virtual void addBrokerReloadCallback( BrokerReloadCallback cb, void* usr );
222 
224  virtual void callBrokerReloadCallbacks();
225 
226  protected:
227 
230  virtual void initializeDebuggedAndDisabledFromInit();
231 
233  virtual void initFileLogging( const DtBrokerInitializer& init );
234 
236  virtual void obtainLock();
237 
239  virtual void loadBrokerPlugins();
240 
242  virtual void getLibrariesInDir( const std::string& dir,
243  std::list<std::string>& files ) const;
244 
246  virtual void postInitializePlugins();
247 
249  virtual void reloadBrokerPlugins();
250 
252  virtual void initPortalConnection( const DtBrokerInitializer& init );
253 
255  virtual void initStatisticsManager( const DtBrokerInitializer& init );
256 
258  virtual void stopFileLogging();
259 
262  virtual void processShutdownRequest(const DtPortalBrokerShutdownRequestMessage& obj);
263 
265  virtual void processRestartRequest( bool shouldEnableOneToOne );
266 
268  static void shutdownRequestCb( const DtPortalBrokerShutdownRequestMessage& obj, void* usr );
269 
271  static void processDisableOneToOneCb( const DtPortalBrokerDisableOneToOneMessage& msg, void* usr );
272 
274  static void processEnableOneToOneCb( const DtPortalBrokerEnableOneToOneMessage& msg, void* usr );
275 
277  static void startRequestCb( const DtBrokerStartRequest& obj, void* usr );
278 
280  static void launchGuiRequestCb( const DtBrokerLaunchGuiRequest& obj, void* usr );
281 
284 
287  static void filterObjectCallback( const DtFilterObjectMessage& object, void* userData );
288 
292  virtual void filterObjectCallback( const DtFilterObjectMessage& object );
293 
295 
301  virtual void reportLoadTranslatorFailures( const DtStringSet& failedTranslators ) const;
302 
303  protected:
304 
305  static void objectDiscoveredCallback( const DtBrokerObject* brokerObject, void* usr );
306  static void objectUpdatedCallback( const DtBrokerObject* brokerObject, void* usr );
307  static void objectRemovedCallback( const DtBrokerObject* brokerObject, void* usr );
308 
309 
311  virtual void objectDiscovered( const DtBrokerObject* brokerObject );
312 
314  virtual void objectUpdated( const DtBrokerObject* brokerObject );
315 
317  virtual void objectRemoved( const DtBrokerObject* brokerObject );
318 
320  virtual bool addTranslator( DtInteractionTranslator* intTrans, bool reflectEnabled, bool publishEnabled );
321 
323  virtual bool addTranslator( DtObjectTranslator* objTrans, bool reflectEnabled, bool publishEnabled );
324 
325  private:
326 
328  DtBroker( const DtBroker& other );
329 
331  DtBroker& operator = ( const DtBroker& other );
332 
333  protected:
334 
335  static const char* theVrxPluginInitMethod;
336  static const char* theVrxPluginReloadMethod;
337  static const char* theVrxPluginPostInitMethod;
338 
339  typedef std::map<const DtString,DtInteractionTranslator*> NamedInteractionTranslatorMap;
340  typedef std::map<const DtString,DtObjectTranslator*> NamedObjectTranslatorMap;
343 
346 
347  typedef std::map<std::string,DtDynamicLibrary*> BrokerPluginsMap;
349 
350  struct CallbackPair { BrokerReloadCallback fcn; void* usr; };
351  typedef std::list<CallbackPair> CallbackPairList;
353 
355 
356  DtU16 myBrokerId;
360 
362 
363  std::set<DtString> myDisabledTranslators;
364  std::set<DtString> myDebuggedTranslators;
365 
368  DtFilePrinter* myFilePrinter;
369 #ifdef _WIN32
370  HANDLE myMutexOneAppHandle;
371 #endif
372  // this section defines variables used for lock files in Linux
373 #ifdef __linux__
374  DtString lockFilename;
375  struct flock lock;
376  int lockFileDes;
377 #endif
378 
379  };
380 
381 
382  //
383  // Inline method definitions.
384  //
385 
387  {
388  return myBrokerInitializer;
389  }
390 
392  {
393  return myFilterManager;
394  }
395 
397  {
398  return myFilterManager;
399  }
400 
402  {
404  }
405 
406  inline const DtString DtBroker::brokerName() const
407  {
409  }
410 
411 }

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)