VR-Exchange 2.7 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  typedef void (*PluginUnloadMethod)( DtBroker* );
61 
62 
63  typedef void (*BrokerReloadCallback)( void* );
64 
67 
68  protected:
69 
71  DtBroker();
72 
75  virtual void initialize( DtBrokerInitializer* init );
76 
78  virtual void initialize();
79 
81  virtual void logBrokerSettings( DtBrokerInitializer* init );
82 
83  public:
84 
86  virtual ~DtBroker();
87 
89  virtual DtPortalConnection* portalConnection() const;
90 
92  virtual void initializeUi( DtGenericUserInterface* ui );
93 
96  virtual void startBroker();
97 
99  virtual void launchGui();
100 
104  virtual void launchInfoGui();
105 
107  virtual DtInteractionTranslatorFactory* interactionTranslatorFactory();
108 
110  virtual DtObjectTranslatorFactory* objectTranslatorFactory();
111 
113  virtual void reloadTranslatorDebugging();
114 
116  virtual void reloadBrokerSettings();
117 
119  virtual const DtString brokerName() const;
120 
122  virtual DtU16 brokerId() const;
123 
126  virtual DtTime simTime() const;
127 
129  virtual void updateSimTime() const;
130 
132  virtual bool isRunning() const;
133 
135  virtual bool isTimeToQuit() const;
136 
138  virtual bool isTranslatorDebuggingOn( const DtString& name ) const;
139 
141  virtual DtTime pollingInterval();
142 
144  virtual DtBrokerInitializer* brokerInitializer() const;
145 
147  // brokers should override to do any periodic processing on the reflection side.
148  virtual void tick();
149 
151  virtual void processEvents();
152 
154  virtual DtFilterManager& objectFilters();
155 
157  virtual const DtFilterManager& objectFilters() const;
158 
163  virtual void setBrokerId( int id );
164 
166  virtual void shutdownWithError( const DtString & error );
167 
169  virtual DtObjectTranslator* getObjectTranslator( const DtString& name );
170 
172  virtual DtInteractionTranslator* getInteractionTranslator( const DtString& name );
173 
176  virtual void loadTranslators();
177 
179  virtual void initializeTranslators( DtStringSet& failedTranslators );
180 
183  virtual void loadKnownObjectTranslators( DtStringSet& failedTranslators );
184 
187  virtual void loadKnownInteractionTranslators( DtStringSet& failedTranslators );
188 
192  virtual bool loadObjectTranslator( const DtString& translatorName );
193 
197  virtual bool loadInteractionTranslator( const DtString& translatorName );
198 
201  virtual void shutdown();
202 
204  virtual void addBrokerReloadCallback( BrokerReloadCallback cb, void* usr );
205 
207  virtual void callBrokerReloadCallbacks();
208 
209  protected:
210 
213  virtual void initializeDebuggedAndDisabledFromInit();
214 
216  virtual void initFileLogging( const DtBrokerInitializer& init );
217 
219  virtual void obtainLock();
220 
222  virtual void loadBrokerPlugins();
223 
225  virtual void scanForPlugins( const std::string& dir, std::list<std::string>& files ) const;
226 
228  virtual void postInitializePlugins();
229 
231  virtual void reloadBrokerPlugins();
232 
234  virtual void initPortalConnection( const DtBrokerInitializer& init );
235 
237  virtual void initStatisticsManager( const DtBrokerInitializer& init );
238 
240  virtual void stopFileLogging();
241 
244  virtual void processShutdownRequest(const DtPortalBrokerShutdownRequestMessage& obj);
245 
247  virtual void processRestartRequest( bool shouldEnableOneToOne );
248 
250  static void shutdownRequestCb( const DtPortalBrokerShutdownRequestMessage& obj, void* usr );
251 
253  static void processDisableOneToOneCb( const DtPortalBrokerDisableOneToOneMessage& msg, void* usr );
254 
256  static void processEnableOneToOneCb( const DtPortalBrokerEnableOneToOneMessage& msg, void* usr );
257 
259  static void startRequestCb( const DtBrokerStartRequest& obj, void* usr );
260 
262  static void launchGuiRequestCb( const DtBrokerLaunchGuiRequest& obj, void* usr );
263 
266 
269  static void filterObjectCallback( const DtFilterObjectMessage& object, void* userData );
270 
274  virtual void filterObjectCallback( const DtFilterObjectMessage& object );
275 
277 
283  virtual void reportLoadTranslatorFailures( const DtStringSet& failedTranslators ) const;
284 
285  protected:
286 
287  static void objectDiscoveredCallback( const DtBrokerObject* brokerObject, void* usr );
288  static void objectUpdatedCallback( const DtBrokerObject* brokerObject, void* usr );
289  static void objectRemovedCallback( const DtBrokerObject* brokerObject, void* usr );
290 
291 
293  virtual void objectDiscovered( const DtBrokerObject* brokerObject );
294 
296  virtual void objectUpdated( const DtBrokerObject* brokerObject );
297 
299  virtual void objectRemoved( const DtBrokerObject* brokerObject );
300 
302  virtual bool addTranslator( DtInteractionTranslator* intTrans, bool reflectEnabled, bool publishEnabled );
303 
305  virtual bool addTranslator( DtObjectTranslator* objTrans, bool reflectEnabled, bool publishEnabled );
306 
307  private:
308 
310  DtBroker( const DtBroker& other );
311 
313  DtBroker& operator = ( const DtBroker& other );
314 
315  protected:
316 
317  static const char* theVrxPluginInitMethod;
318  static const char* theVrxPluginReloadMethod;
319  static const char* theVrxPluginPostInitMethod;
320  static const char* theVrxPluginUnloadMethod;
321 
322  typedef std::map<const DtString,DtInteractionTranslator*> NamedInteractionTranslatorMap;
323  typedef std::map<const DtString,DtObjectTranslator*> NamedObjectTranslatorMap;
326 
329 
330  typedef std::map<std::string,DtDynamicLibrary*> BrokerPluginsMap;
332 
333  struct CallbackPair { BrokerReloadCallback fcn; void* usr; };
334  typedef std::list<CallbackPair> CallbackPairList;
336 
338 
339  DtU16 myBrokerId;
341 
345 
347 
348  std::set<DtString> myDebuggedTranslators;
349 
352  DtFilePrinter* myFilePrinter;
353 #ifdef _WIN32
354  HANDLE myMutexOneAppHandle;
355 #endif
356  // this section defines variables used for lock files in Linux
357 #ifdef __linux__
358  DtString lockFilename;
359  struct flock lock;
360  int lockFileDes;
361 #endif
362 
363  };
364 
365 
366  //
367  // Inline method definitions.
368  //
369 
371  {
372  return myBrokerInitializer;
373  }
374 
376  {
377  return myFilterManager;
378  }
379 
381  {
382  return myFilterManager;
383  }
384 
386  {
388  }
389 
390  inline const DtString DtBroker::brokerName() const
391  {
393  }
394 
395 }
virtual DtFilterManager & objectFilters()
Accessor for the broker&#39;s object filter manager.
Definition: broker.h:375
DtFilePrinter * myFilePrinter
Definition: broker.h:352
DtObjectTranslatorFactory myObjectTranslatorFactory
Definition: broker.h:328
DtU32 myBrokerType
Definition: broker.h:340
virtual DtBrokerInitializer * brokerInitializer() const
Returns the brokerInitializer object used to create this broker.
Definition: broker.h:370
A class to initialize DtBroker instances.
Definition: brokerInitializer.h:35
Contains the DtPortalControlMessage class declarations.
DtStatisticsManager * myStatisticsManager
Definition: broker.h:351
Provides container to hold pointers to Protocol/Portal objects.
Definition: brokerObject.h:24
DtTranslatorFactory< DtInteractionTranslator > DtInteractionTranslatorFactory
Definition: broker.h:65
Manages statistics gathering and reporting for the broker.
Definition: statisticsManager.h:26
bool myBrokerIsRunning
Definition: broker.h:342
std::map< std::string, DtDynamicLibrary * > BrokerPluginsMap
Definition: broker.h:330
std::set< DtString > myDebuggedTranslators
Definition: broker.h:348
Contains the DtGenericUserInterface class declaration.
DtFilterManager myFilterManager
Definition: broker.h:350
DtPortalConnection * myPortalConn
Definition: broker.h:344
#define DT_DLL_BROKER
Definition: include/broker/dllExport.h:20
std::map< const DtString, DtInteractionTranslator * > NamedInteractionTranslatorMap
Definition: broker.h:322
PortalControlMessageTemplate is used to create new DtPortalControlMessage types.
Definition: pControlMessage.h:71
Contains the DtInteractionTranslator and DtBaseInteractionTranslator class declarations.
virtual DtTime pollingInterval()
Returns the amount of time that the broker is asking to be polled.
Definition: broker.h:385
virtual int pollingInterval() const
Returns the interval, in ms, between each call to drainInput() on the exercise connection.
BrokerPluginsMap myBrokerPlugins
Definition: broker.h:331
virtual DtString brokerName() const
The name of this broker.
static const char * theVrxPluginUnloadMethod
Definition: broker.h:320
DtInteractionTranslators provide common logic for translating interactions.
Definition: baseInteractionTranslator.h:21
DtGenericUserInterface * myUi
Definition: broker.h:337
Contains the DtBrokerInitializer class declaration.
static const char * theVrxPluginInitMethod
Definition: broker.h:317
DtInteractionTranslatorFactory myInteractionTranslatorFactory
Definition: broker.h:327
Base class for all broker objects.
Definition: broker.h:53
CallbackPairList myBrokerReloadCallbacks
Definition: broker.h:335
DtFilterObjectMessage is used to indicate a specific object needs to be filtered. ...
Definition: pControlMessage.h:105
Contains the DtObjectTranslator and DtBaseObjectTranslator class declarations.
static const char * theVrxPluginReloadMethod
Definition: broker.h:318
Contains the DtTranslatorFactory class declaration.
NamedObjectTranslatorMap myObjectTranslatorMap
Definition: broker.h:325
virtual const DtString brokerName() const
Returns the brokers name.
Definition: broker.h:390
DtU16 myBrokerId
Definition: broker.h:339
Connects a broker to the Portal Data Exchange.
Definition: pConnection.h:49
NamedInteractionTranslatorMap myInteractionTranslatorMap
Definition: broker.h:324
void * usr
Definition: broker.h:333
static const char * theVrxPluginPostInitMethod
Definition: broker.h:319
std::map< const DtString, DtObjectTranslator * > NamedObjectTranslatorMap
Definition: broker.h:323
Provides object filtering.
Definition: filterManager.h:31
DtBrokerInitializer * myBrokerInitializer
Definition: broker.h:346
DtObjectTranslators provide common logic for translating objects.
Definition: baseObjectTranslator.h:25
DtTranslatorFactory< DtObjectTranslator > DtObjectTranslatorFactory
Definition: broker.h:66
An abstract version of a Broker Interface.
Definition: genericUserInterface.h:21
std::list< CallbackPair > CallbackPairList
Definition: broker.h:334
bool myShutdownRequestedFlag
Definition: broker.h:343

Document ID: Generated on Mon Apr 19 15:55:22 EDT 2021 from SVN revision 227909
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)