VR-Exchange 2.6 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) 2017 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 
136  virtual bool isTranslatorDebuggingOn( const DtString& name ) const;
137 
139  virtual DtTime pollingInterval();
140 
142  virtual DtBrokerInitializer* brokerInitializer() const;
143 
145  // brokers should override to do any periodic processing on the reflection side.
146  virtual void tick();
147 
149  virtual void processEvents();
150 
152  virtual DtFilterManager& objectFilters();
153 
155  virtual const DtFilterManager& objectFilters() const;
156 
161  virtual void setBrokerId( int id );
162 
164  virtual void shutdownWithError( const DtString & error );
165 
167  virtual DtObjectTranslator* getObjectTranslator( const DtString& name );
168 
170  virtual DtInteractionTranslator* getInteractionTranslator( const DtString& name );
171 
174  virtual void loadTranslators();
175 
177  virtual void initializeTranslators( DtStringSet& failedTranslators );
178 
181  virtual void loadKnownObjectTranslators( DtStringSet& failedTranslators );
182 
185  virtual void loadKnownInteractionTranslators( DtStringSet& failedTranslators );
186 
190  virtual bool loadObjectTranslator( const DtString& translatorName );
191 
195  virtual bool loadInteractionTranslator( const DtString& translatorName );
196 
199  virtual void shutdown();
200 
202  virtual void addBrokerReloadCallback( BrokerReloadCallback cb, void* usr );
203 
205  virtual void callBrokerReloadCallbacks();
206 
207  protected:
208 
211  virtual void initializeDebuggedAndDisabledFromInit();
212 
214  virtual void initFileLogging( const DtBrokerInitializer& init );
215 
217  virtual void obtainLock();
218 
220  virtual void loadBrokerPlugins();
221 
223  virtual void scanForPlugins( const std::string& dir, std::list<std::string>& files ) const;
224 
226  virtual void postInitializePlugins();
227 
229  virtual void reloadBrokerPlugins();
230 
232  virtual void initPortalConnection( const DtBrokerInitializer& init );
233 
235  virtual void initStatisticsManager( const DtBrokerInitializer& init );
236 
238  virtual void stopFileLogging();
239 
242  virtual void processShutdownRequest(const DtPortalBrokerShutdownRequestMessage& obj);
243 
245  virtual void processRestartRequest( bool shouldEnableOneToOne );
246 
248  static void shutdownRequestCb( const DtPortalBrokerShutdownRequestMessage& obj, void* usr );
249 
251  static void processDisableOneToOneCb( const DtPortalBrokerDisableOneToOneMessage& msg, void* usr );
252 
254  static void processEnableOneToOneCb( const DtPortalBrokerEnableOneToOneMessage& msg, void* usr );
255 
257  static void startRequestCb( const DtBrokerStartRequest& obj, void* usr );
258 
260  static void launchGuiRequestCb( const DtBrokerLaunchGuiRequest& obj, void* usr );
261 
264 
267  static void filterObjectCallback( const DtFilterObjectMessage& object, void* userData );
268 
272  virtual void filterObjectCallback( const DtFilterObjectMessage& object );
273 
275 
281  virtual void reportLoadTranslatorFailures( const DtStringSet& failedTranslators ) const;
282 
283  protected:
284 
285  static void objectDiscoveredCallback( const DtBrokerObject* brokerObject, void* usr );
286  static void objectUpdatedCallback( const DtBrokerObject* brokerObject, void* usr );
287  static void objectRemovedCallback( const DtBrokerObject* brokerObject, void* usr );
288 
289 
291  virtual void objectDiscovered( const DtBrokerObject* brokerObject );
292 
294  virtual void objectUpdated( const DtBrokerObject* brokerObject );
295 
297  virtual void objectRemoved( const DtBrokerObject* brokerObject );
298 
300  virtual bool addTranslator( DtInteractionTranslator* intTrans, bool reflectEnabled, bool publishEnabled );
301 
303  virtual bool addTranslator( DtObjectTranslator* objTrans, bool reflectEnabled, bool publishEnabled );
304 
305  private:
306 
308  DtBroker( const DtBroker& other );
309 
311  DtBroker& operator = ( const DtBroker& other );
312 
313  protected:
314 
315  static const char* theVrxPluginInitMethod;
316  static const char* theVrxPluginReloadMethod;
317  static const char* theVrxPluginPostInitMethod;
318 
319  typedef std::map<const DtString,DtInteractionTranslator*> NamedInteractionTranslatorMap;
320  typedef std::map<const DtString,DtObjectTranslator*> NamedObjectTranslatorMap;
323 
326 
327  typedef std::map<std::string,DtDynamicLibrary*> BrokerPluginsMap;
329 
330  struct CallbackPair { BrokerReloadCallback fcn; void* usr; };
331  typedef std::list<CallbackPair> CallbackPairList;
333 
335 
336  DtU16 myBrokerId;
338 
342 
344 
345  std::set<DtString> myDebuggedTranslators;
346 
349  DtFilePrinter* 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 Wed Jan 30 18:15:18 EST 2019 from SVN revision 195534
Copyright © 2005-2019 VT MÄK. All Rights Reserved (www.mak.com)