VR-Forces 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  virtual void cleanupSignals();
104  EventSignal& signalForResourceRequestEvent();
105  EventSignal& signalForResourceResponseEvent();
106  EventSignal& signalForFireEvent();
107  EventSignal& signalForDetonationEvent();
108  EventSignal& signalForDataEvent();
109  EventSignal& signalForCommentEvent();
110  EventSignal& signalForRawSignalEvent();
111  EventSignal& signalForVrfSignalEvent();
112  EventSignal& signalForExternalCommsSignalEvent();
113  EventSignal& signalForSensorFieldOfViewControlEvent();
114  EventSignal& signalForSimControlEvent();
115  EventSignal& signalDiGuyActionEvent();
116  EventSignal& signalForInfluenceEvent();
117  EventSignal& signalForInitiateTakeEvent();
118  EventSignal& signalForTransferRequestEvent();
119  EventSignal& signalForTransferResponseEvent();
120  EventSignal& signalForOwnershipAcquisitionRejectedEvent();
121  EventSignal& signalForOwnershipAcquisitionAcquiredEvent();
122  EventSignal& signalForOwnershipAcquisitionDivestedEvent();
123  EventSignal& signalForCollisionEvent();
124  EventSignal& signalForServiceRequestEvent();
125  EventSignal& signalForResupplyOfferEvent();
126  EventSignal& signalForResupplyReceivedEvent();
127  EventSignal& signalForResupplyCancelEvent();
128  EventSignal& signalForInterrogatorEvent();
129  EventSignal& signalForInterrogatorResponseEvent();
130  EventSignal& signalForTaskEvent();
131  EventSignal& signalForSetRequestEvent();
133 
134  public:
135 
137  virtual void selfReflect(unsigned int i);
138  virtual void doNotSelfReflect(unsigned int i);
139 
141  virtual bool wantsToSelfReflect(unsigned int) const;
142 
144  virtual void postEvent(const DtEvent&);
145 
146  protected:
147 
148  virtual void processEvent(const DtEvent&);
149 
151  virtual bool wantsToProcessEvent(const DtEvent&) const;
152 
154  virtual void addEvent(const DtEvent&, bool& selfReflecting);
155 
156  protected:
157  tbb::spin_mutex myMutex;
158  std::vector<DtEvent*> myEvents;
159 
160  tbb::spin_mutex myCallbackMutex;
161  typedef std::map<DtEvent::EventType, EventSignal*> EventCallbackMap;
163 
165 
167 
168  std::set<unsigned int> myDoNotSelfReflect;
169 
170 
173  };
174 }
DtEventManager *(* DtEventManagerCreatorFcn)()
Definition: eventManager.h:23
EventType
Definition: event.h:16
bool processNetworkEventsLocally() const
Definition: eventManager.h:82
static DtEventManagerCreatorFcn theEventManagerCreatorFcn
Definition: eventManager.h:164
DtNetworkInterfaceManager * myNetworkManager
Definition: eventManager.h:171
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:168
tbb::spin_mutex myMutex
Definition: eventManager.h:157
Definition: event.h:13
std::vector< DtEvent * > myEvents
Definition: eventManager.h:158
bool processEventsImmediately() const
Definition: eventManager.h:64
std::map< DtEvent::EventType, EventSignal * > EventCallbackMap
Definition: eventManager.h:161
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:47
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:162
bool myProcessEventsImmediately
Definition: eventManager.h:166
bool myProcessNetworkEventsLocally
Definition: eventManager.h:172
tbb::spin_mutex myCallbackMutex
Definition: eventManager.h:160

Document ID: Generated on Thu Oct 23 22:29:17 EDT 2025 from SVN revision 280951
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)