VR-Exchange 2.8 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) 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 namespace makVrf
34 {
35  class DtVrlinkVrfRemoteController;
36 }
37 
38 
39 namespace MAKVrExchange
40 {
41 
42  class DtPortalConnection;
43  class DtStatisticsManager;
44 
59  {
60  public:
61 
62  typedef bool (*PluginInitMethod)( DtBroker* );
63  typedef void (*PluginReloadMethod)( DtBroker* );
64  typedef void (*PluginPostInitMethod)( DtBroker* );
65  typedef void (*PluginUnloadMethod)( DtBroker* );
66 
67 
68  typedef void (*BrokerReloadCallback)( void* );
69 
72 
73  protected:
74 
76  DtBroker();
77 
80  virtual void initialize( DtBrokerInitializer* init );
81 
83  virtual void initialize();
84 
86  virtual void logBrokerSettings( DtBrokerInitializer* init );
87 
88  public:
89 
91  virtual ~DtBroker();
92 
94  virtual DtPortalConnection* portalConnection() const;
95 
97  virtual void initializeUi( DtGenericUserInterface* ui );
98 
101  virtual void startBroker();
102 
104  virtual void launchGui();
105 
109  virtual void launchInfoGui();
110 
112  virtual DtInteractionTranslatorFactory* interactionTranslatorFactory();
113 
115  virtual DtObjectTranslatorFactory* objectTranslatorFactory();
116 
118  virtual void reloadTranslatorDebugging();
119 
121  virtual void reloadBrokerSettings();
122 
124  virtual const DtString brokerName() const;
125 
127  virtual DtU16 brokerId() const;
128 
130  virtual DtU32 brokerType() const;
131 
134  virtual DtTime simTime() const;
135 
137  virtual void updateSimTime() const;
138 
140  virtual bool isRunning() const;
141 
143  virtual bool isTimeToQuit() const;
144 
146  virtual bool isTranslatorDebuggingOn( const DtString& name ) const;
147 
149  virtual DtTime pollingInterval();
150 
152  virtual DtBrokerInitializer* brokerInitializer() const;
153 
155  // brokers should override to do any periodic processing on the reflection side.
156  virtual void tick();
157 
159  virtual void processEvents();
160 
162  virtual DtFilterManager& objectFilters();
163 
165  virtual const DtFilterManager& objectFilters() const;
166 
171  virtual void setBrokerId( int id );
172 
174  virtual void shutdownWithError( const DtString & error );
175 
177  virtual DtObjectTranslator* getObjectTranslator( const DtString& name );
178 
180  virtual DtInteractionTranslator* getInteractionTranslator( const DtString& name );
181 
184  virtual void loadTranslators();
185 
187  virtual void initializeTranslators( DtStringSet& failedTranslators );
188 
191  virtual void loadKnownObjectTranslators( DtStringSet& failedTranslators );
192 
195  virtual void loadKnownInteractionTranslators( DtStringSet& failedTranslators );
196 
200  virtual bool loadObjectTranslator( const DtString& translatorName );
201 
205  virtual bool loadInteractionTranslator( const DtString& translatorName );
206 
209  virtual void shutdown();
210 
212  virtual void addBrokerReloadCallback( BrokerReloadCallback cb, void* usr );
213 
215  virtual void callBrokerReloadCallbacks();
216 
220  virtual void setVrfRemoteController(makVrf::DtVrlinkVrfRemoteController* vrfRC) { myVrfRemoteController = vrfRC; };
221  virtual makVrf::DtVrlinkVrfRemoteController* vrfRemoteController() { return myVrfRemoteController; };
222 
224  virtual void setDarkModeEnabled(bool flag);
225  virtual bool darkModeEnabled();
226 
227  protected:
228 
231  virtual void initializeDebuggedAndDisabledFromInit();
232 
234  virtual void initFileLogging( const DtBrokerInitializer& init );
235 
237  virtual void obtainLock();
238 
240  virtual void loadBrokerPlugins();
241 
243  virtual void scanForPlugins( const std::string& dir, 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  static const char* theVrxPluginUnloadMethod;
339 
340  typedef std::map<const DtString,DtInteractionTranslator*> NamedInteractionTranslatorMap;
341  typedef std::map<const DtString,DtObjectTranslator*> NamedObjectTranslatorMap;
344 
347 
348  typedef std::map<std::string,DtDynamicLibrary*> BrokerPluginsMap;
350 
351  struct CallbackPair { BrokerReloadCallback fcn; void* usr; };
352  typedef std::list<CallbackPair> CallbackPairList;
354 
356 
357  DtU16 myBrokerId;
359 
363 
365 
366  std::set<DtString> myDebuggedTranslators;
367 
370  DtFilePrinter* myFilePrinter;
371  makVrf::DtVrlinkVrfRemoteController* myVrfRemoteController;
372 
374 #ifdef _WIN32
375  HANDLE myMutexOneAppHandle;
376 #endif
377  // this section defines variables used for lock files in Linux
378 #ifdef __linux__
379  DtString lockFilename;
380  struct flock lock;
381  int lockFileDes;
382 #endif
383 
384  };
385 
386 
387  //
388  // Inline method definitions.
389  //
390 
392  {
393  return myBrokerInitializer;
394  }
395 
397  {
398  return myFilterManager;
399  }
400 
402  {
403  return myFilterManager;
404  }
405 
407  {
409  }
410 
411  inline const DtString DtBroker::brokerName() const
412  {
414  }
415 
416 }
virtual DtFilterManager & objectFilters()
Accessor for the broker&#39;s object filter manager.
Definition: broker.h:396
DtFilePrinter * myFilePrinter
Definition: broker.h:370
DtObjectTranslatorFactory myObjectTranslatorFactory
Definition: broker.h:346
DtU32 myBrokerType
Definition: broker.h:358
virtual DtBrokerInitializer * brokerInitializer() const
Returns the brokerInitializer object used to create this broker.
Definition: broker.h:391
A class to initialize DtBroker instances.
Definition: brokerInitializer.h:35
Contains the DtPortalControlMessage class declarations.
DtStatisticsManager * myStatisticsManager
Definition: broker.h:369
Provides container to hold pointers to Protocol/Portal objects.
Definition: brokerObject.h:24
DtTranslatorFactory< DtInteractionTranslator > DtInteractionTranslatorFactory
Definition: broker.h:70
Manages statistics gathering and reporting for the broker.
Definition: statisticsManager.h:26
bool myBrokerIsRunning
Definition: broker.h:360
std::map< std::string, DtDynamicLibrary * > BrokerPluginsMap
Definition: broker.h:348
std::set< DtString > myDebuggedTranslators
Definition: broker.h:366
Contains the DtGenericUserInterface class declaration.
bool myDarkModeEnabled
Definition: broker.h:373
DtFilterManager myFilterManager
Definition: broker.h:368
DtPortalConnection * myPortalConn
Definition: broker.h:362
#define DT_DLL_BROKER
Definition: include/broker/dllExport.h:20
std::map< const DtString, DtInteractionTranslator * > NamedInteractionTranslatorMap
Definition: broker.h:340
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:406
virtual int pollingInterval() const
Returns the interval, in ms, between each call to drainInput() on the exercise connection.
BrokerPluginsMap myBrokerPlugins
Definition: broker.h:349
virtual DtString brokerName() const
The name of this broker.
static const char * theVrxPluginUnloadMethod
Definition: broker.h:338
makVrf::DtVrlinkVrfRemoteController * myVrfRemoteController
Definition: broker.h:371
DtInteractionTranslators provide common logic for translating interactions.
Definition: baseInteractionTranslator.h:21
DtGenericUserInterface * myUi
Definition: broker.h:355
Contains the DtBrokerInitializer class declaration.
static const char * theVrxPluginInitMethod
Definition: broker.h:335
DtInteractionTranslatorFactory myInteractionTranslatorFactory
Definition: broker.h:345
Base class for all broker objects.
Definition: broker.h:58
CallbackPairList myBrokerReloadCallbacks
Definition: broker.h:353
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:336
Contains the DtTranslatorFactory class declaration.
NamedObjectTranslatorMap myObjectTranslatorMap
Definition: broker.h:343
virtual void setVrfRemoteController(makVrf::DtVrlinkVrfRemoteController *vrfRC)
Set and get the VRF Remote Controller pointer from the broker.
Definition: broker.h:220
virtual const DtString brokerName() const
Returns the brokers name.
Definition: broker.h:411
DtU16 myBrokerId
Definition: broker.h:357
Connects a broker to the Portal Data Exchange.
Definition: pConnection.h:49
NamedInteractionTranslatorMap myInteractionTranslatorMap
Definition: broker.h:342
void * usr
Definition: broker.h:351
static const char * theVrxPluginPostInitMethod
Definition: broker.h:337
std::map< const DtString, DtObjectTranslator * > NamedObjectTranslatorMap
Definition: broker.h:341
Provides object filtering.
Definition: filterManager.h:31
DtBrokerInitializer * myBrokerInitializer
Definition: broker.h:364
virtual makVrf::DtVrlinkVrfRemoteController * vrfRemoteController()
Definition: broker.h:221
DtObjectTranslators provide common logic for translating objects.
Definition: baseObjectTranslator.h:25
DtTranslatorFactory< DtObjectTranslator > DtObjectTranslatorFactory
Definition: broker.h:71
An abstract version of a Broker Interface.
Definition: genericUserInterface.h:21
std::list< CallbackPair > CallbackPairList
Definition: broker.h:352
bool myShutdownRequestedFlag
Definition: broker.h:361

Document ID: Generated on Tue Aug 16 16:15:26 EDT 2022 from SVN revision 245901
Copyright © 2005-2022 MAK Technologies. All Rights Reserved (www.mak.com)