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

Document ID: Generated on Wed Mar 27 22:49:11 EDT 2024 from SVN revision 264633
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)