VR-Forces 5.0.3 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& signalForRawSignalEvent();
108  EventSignal& signalForVrfSignalEvent();
109  EventSignal& signalForExternalCommsSignalEvent();
110  EventSignal& signalForSensorFieldOfViewControlEvent();
111  EventSignal& signalForSimControlEvent();
112  EventSignal& signalDiGuyActionEvent();
113  EventSignal& signalForInfluenceEvent();
114  EventSignal& signalForInitiateTakeEvent();
115  EventSignal& signalForTransferRequestEvent();
116  EventSignal& signalForTransferResponseEvent();
117  EventSignal& signalForOwnershipAcquisitionRejectedEvent();
118  EventSignal& signalForOwnershipAcquisitionAcquiredEvent();
119  EventSignal& signalForTransferAcquisitionRequestEvent();
120  EventSignal& signalForTransferAcquisitionResponseEvent();
121  EventSignal& signalForCollisionEvent();
122  EventSignal& signalForServiceRequestEvent();
123  EventSignal& signalForResupplyOfferEvent();
124  EventSignal& signalForResupplyReceivedEvent();
125  EventSignal& signalForResupplyCancelEvent();
127 
128  public:
129 
131  virtual void selfReflect(unsigned int i);
132  virtual void doNotSelfReflect(unsigned int i);
133 
135  virtual bool wantsToSelfReflect(unsigned int) const;
136 
138  virtual void postEvent(const DtEvent&);
139 
140  protected:
141 
142  virtual void processEvent(const DtEvent&);
143 
145  virtual bool wantsToProcessEvent(const DtEvent&) const;
146 
148  virtual void addEvent(const DtEvent&, bool& selfReflecting);
149 
150  protected:
151  tbb::spin_mutex myMutex;
152  std::vector<DtEvent*> myEvents;
153 
154  tbb::spin_mutex myCallbackMutex;
155  typedef std::map<DtEvent::EventType, EventSignal*> EventCallbackMap;
157 
159 
161 
162  std::set<unsigned int> myDoNotSelfReflect;
163 
164 
167  };
168 }
DtEventManager *(* DtEventManagerCreatorFcn)()
Definition: eventManager.h:23
EventType
Definition: event.h:16
bool processNetworkEventsLocally() const
Definition: eventManager.h:82
static DtEventManagerCreatorFcn theEventManagerCreatorFcn
Definition: eventManager.h:158
DtNetworkInterfaceManager * myNetworkManager
Definition: eventManager.h:165
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:162
tbb::spin_mutex myMutex
Definition: eventManager.h:151
Definition: event.h:13
std::vector< DtEvent * > myEvents
Definition: eventManager.h:152
bool processEventsImmediately() const
Definition: eventManager.h:64
std::map< DtEvent::EventType, EventSignal * > EventCallbackMap
Definition: eventManager.h:155
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:45
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:156
bool myProcessEventsImmediately
Definition: eventManager.h:160
bool myProcessNetworkEventsLocally
Definition: eventManager.h:166
tbb::spin_mutex myCallbackMutex
Definition: eventManager.h:154

Document ID: Generated on Thu Jun 1 17:58:13 EDT 2023 from SVN revision 255404
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)