VR-Forces 5.0.1 Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
eventManager.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2019 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 #pragma once
6 
9 #include <tbb/spin_mutex.h>
10 #include <map>
11 #include <boost/signals2.hpp>
12 
13 
14 
16 
17 namespace makVrfEvents
18 {
19  class DtEvent;
20  class DtEventManager;
21  class DtSimControlEvent;
22 
23  typedef DtEventManager* (*DtEventManagerCreatorFcn)();
24 
34  {
35  private:
39  DtEventManager& operator=(const DtEventManager&);
40 
41  public:
43  virtual ~DtEventManager();
44 
45  virtual void tick();
46 
49  virtual void addEvent(const DtEvent&);
50 
52  virtual void sendEvent(const DtEvent&);
53 
57  static void setEventManagerCreatorFcn(DtEventManagerCreatorFcn fcn);
58  static DtEventManager* createEventManager();
60 
63  virtual void setProcessEventsImmediately(bool b);
65  {
66  return myProcessEventsImmediately;
67  }
68 
70  virtual void setNetworkManager(DtNetworkInterfaceManager*);
72  {
73  return myNetworkManager;
74  }
75 
77  virtual void resetSimulation();
78 
81  virtual void setProcessNetworkEventsLocally(bool);
83  {
84  return myProcessNetworkEventsLocally;
85  }
86 
87  public:
88 
89  typedef boost::signals2::signal<void (const DtEvent&)> EventSignal;
90 
93 
94  virtual EventSignal& signalForEvent(DtEvent::EventType type);
96 
102 
103  EventSignal& signalForFireEvent();
104  EventSignal& signalForDetonationEvent();
105  EventSignal& signalForDataEvent();
106  EventSignal& signalForCommentEvent();
107  EventSignal& signalForSignalEvent();
108  EventSignal& signalForSensorFieldOfViewControlEvent();
109  EventSignal& signalForSimControlEvent();
110  EventSignal& signalDiGuyActionEvent();
111  EventSignal& signalForInfluenceEvent();
112  EventSignal& signalForInitiateTakeEvent();
113  EventSignal& signalForTransferRequestEvent();
114  EventSignal& signalForTransferResponseEvent();
115  EventSignal& signalForOwnershipAcquisitionRejectedEvent();
116  EventSignal& signalForOwnershipAcquisitionAcquiredEvent();
117  EventSignal& signalForTransferAcquisitionRequestEvent();
118  EventSignal& signalForTransferAcquisitionResponseEvent();
119  EventSignal& signalForCollisionEvent();
120  EventSignal& signalForServiceRequestEvent();
121  EventSignal& signalForResupplyOfferEvent();
122  EventSignal& signalForResupplyReceivedEvent();
123  EventSignal& signalForResupplyCancelEvent();
125 
126  public:
127 
129  virtual void selfReflect(unsigned int i);
130  virtual void doNotSelfReflect(unsigned int i);
131 
133  virtual bool wantsToSelfReflect(unsigned int) const;
134 
136  virtual void postEvent(const DtEvent&);
137 
138  protected:
139 
140  virtual void processEvent(const DtEvent&);
141 
143  virtual bool wantsToProcessEvent(const DtEvent&) const;
144 
146  virtual void addEvent(const DtEvent&, bool& selfReflecting);
147 
148  protected:
149  tbb::spin_mutex myMutex;
150  std::vector<DtEvent*> myEvents;
151 
152  tbb::spin_mutex myCallbackMutex;
153  typedef std::map<DtEvent::EventType, EventSignal*> EventCallbackMap;
155 
157 
159 
160  std::set<unsigned int> myDoNotSelfReflect;
161 
162 
165  };
166 }
DtEventManager *(* DtEventManagerCreatorFcn)()
Definition: eventManager.h:23
EventType
Definition: event.h:16
bool processNetworkEventsLocally() const
Definition: eventManager.h:82
static DtEventManagerCreatorFcn theEventManagerCreatorFcn
Definition: eventManager.h:156
DtNetworkInterfaceManager * myNetworkManager
Definition: eventManager.h:163
The DtEventManager handles the sending and receipt of system events (fire, detonate, command, etc). It provides a thread-safe way for the sim engine to send and receive such events, between both components within this sim engine and other remote applications.
Definition: eventManager.h:33
std::set< unsigned int > myDoNotSelfReflect
Definition: eventManager.h:160
tbb::spin_mutex myMutex
Definition: eventManager.h:149
Definition: event.h:13
std::vector< DtEvent * > myEvents
Definition: eventManager.h:150
bool processEventsImmediately() const
Definition: eventManager.h:64
std::map< DtEvent::EventType, EventSignal * > EventCallbackMap
Definition: eventManager.h:153
The DtNetworkInterfaceManager manages all network interfaces utilized by the sim engine. Often there is only one, but it is possible for there to be multiple. Each network interface is an instance of a subclass of DtNetworkManagerInterface. As state data is created or removed, the DtNetworkInterfaceManager will notify each of its network interfaces, so that they may create object network interfaces to output required state data to the network.
Definition: networkInterfaceManager.h:44
boost::signals2::signal< void(const DtEvent &)> EventSignal
Definition: eventManager.h:89
#define DT_DLL_vrfMsgTransport
This file is used to determine how to build Disable inconsistent dll linkage warning Visual Studio 6...
Definition: vrfCommunicationManagerDefines.h:26
DtNetworkInterfaceManager * networkInterfaceManager() const
Definition: eventManager.h:71
EventCallbackMap myEventCallbackMap
Definition: eventManager.h:154
bool myProcessEventsImmediately
Definition: eventManager.h:158
bool myProcessNetworkEventsLocally
Definition: eventManager.h:164
tbb::spin_mutex myCallbackMutex
Definition: eventManager.h:152

Document ID: Generated on Mon Jun 20 00:38:30 EDT 2022 from SVN revision 244029
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)