10 #include "legionNet/boundary.h"
11 #include <legionDataStore/dataTypes.h>
12 #include <vlpi/simulationAddress.h>
14 #include <boost/unordered_map.hpp>
15 #include <matrix/vlVector.h>
16 #include <tbb/spin_rw_mutex.h>
19 #include <boost/signals2.hpp>
32 namespace makVrfEvents
34 class DtTransferRequestEvent;
35 class DtTransferResponseEvent;
41 class DtStateDataManager;
42 class DtLegionEventTranslatorManager;
43 class DtRemoteObjectManager;
44 class DtLegionNetworkInterface;
45 class DtLegionOwnershipTransferManager;
62 virtual void beginFrame(
double)
override;
63 virtual bool preAdvanceFrame()
override;
64 virtual void advanceFrame(
double* networkTime =
nullptr)
override;
66 virtual const char*
type()
const {
return Type(); };
67 static const char*
Type() {
return "legion-network-interface"; };
70 virtual void setInterest(
const DtVector& geocentricCenter,
double radius);
71 virtual void setInterest(
const Legion::Boundary&,
bool andIntent =
true);
72 virtual void setIntent(
const Legion::Boundary&);
74 virtual bool selfReflecting()
const;
75 virtual void setSelfReflecting(
bool);
77 virtual bool wantsToSelfReflect(
unsigned int)
const;
80 virtual bool printDataToStream(
const DtUUID&, DtOutputStream&)
const;
83 virtual const DtStateData* stateDataForEntityId(
const DtEntityIdentifier&)
const;
92 virtual void setExerciseStartTime(
double);
96 virtual void setSiteAppId(
int,
int);
99 virtual void removeAndDeleteAll();
101 virtual void setSimTime(
double);
102 virtual void setTimeMultiplier(
double);
104 virtual void setNeedsInterestRegionSet(
bool val);
105 virtual bool needsInterestRegionSet()
const;
109 virtual DtString nextEventId(
const DtString& = DtString::nullString())
override;
113 return std::string(
"Legion");
116 virtual void setProcessSelfReflect(
bool b);
119 return myProcessSelfReflect;
126 Legion::Configuration* config = 0);
131 return myEventManager;
136 return myStateDataManager;
141 return mySimulationAddress;
146 return myDestructing;
150 virtual bool typeIsPublishable(
const DtEntityType&)
const;
152 virtual int clientId()
const;
156 virtual Legion::EventManager* legionEventManager();
157 virtual Legion::ControlManager* legionControlManager();
160 virtual UInt64 toGlobalIdentifier(
const DtEntityIdentifier&)
const;
161 virtual DtEntityIdentifier toEntityIdentifier(
UInt64)
const;
166 virtual void setDisableRemoteDiscovery(
bool);
169 return myDisableRemoteDiscovery;
173 virtual void setProcessRemoteObjectsInParallel(
bool);
176 return myProcessRemoteObjectsInParallel;
182 virtual void setNumCallbackThreads(
unsigned);
187 return myOwnershipTransferManager;
193 return myCommunicationManager;
198 return mySTEConnection;
203 return myLegionEventTranslatorManager;
219 virtual void stateDataAboutToBeRemoved(
const DtStateData*);
224 virtual void reserve(
unsigned numToReserve);
227 virtual void printReflectedObjectCounts()
const;
230 virtual void requestUpdatesForRemoteNonVrfObjects()
const;
233 virtual void rediscoverObjects(
const std::set<DtString>& ignore);
238 virtual void startScenarioLoad(
bool);
243 virtual void resetSimulation();
244 virtual void rewindScenario();
250 virtual void pause();
252 virtual void setFrameRateMode(
const DtString&
mode,
double deltaTime,
bool manageTime =
false);
264 virtual bool rediscoverObjects();
UUID is a unique ID wrapper class.
Definition: rwUUID.h:229
bool myNeedsInterestSet
Definition: legionNetworkInterface.h:277
tbb::spin_rw_mutex myPublishMutex
Definition: legionNetworkInterface.h:273
unsigned int myNumCallbackThreads
Definition: legionNetworkInterface.h:297
Legion::ControlManager * myLegionControlManager
Definition: legionNetworkInterface.h:287
Instances of DtVrfParameterDb are the database of DtVrfObjectParameters objects used in the construct...
Definition: vrfParameterDb.h:38
virtual bool hasSimulationTime() const
This manager does not deal with sim time.
Definition: legionNetworkInterface.h:261
DtLegionOwnershipTransferManager * ownershipTransferManager()
The transfer manager. Valid after init. Get this to connect for pre transfer from message...
Definition: legionNetworkInterface.h:185
Definition: scenario.h:52
DtCommunicationManager * myCommunicationManager
Definition: legionNetworkInterface.h:292
boost::unordered_map< UInt64, const DtStateData * > StateDataByEntityId
Definition: legionNetworkInterface.h:275
const Coordinate_System * myCoordinateSystem
Definition: legionNetworkInterface.h:282
virtual std::string protocol() const override
Descriptive text of the network protocol.
Definition: legionNetworkInterface.h:111
DtLegionOwnershipTransferManager * myOwnershipTransferManager
Definition: legionNetworkInterface.h:299
bool disableRemoteDiscovery() const
Definition: legionNetworkInterface.h:167
virtual unsigned int maxNameLengthForType(const DtObjectType &) const
If the network interface supports it, the maximum name of a marking text.
Definition: legionNetworkInterface.h:236
#define DT_DLL_legionNetworkInterface
This file is used to determine how to build Disable inconsistent dll linkage warning Visual Studio 6...
Definition: legionNetworkInterfaceDefines.h:26
virtual void setVrfSessionId(int)
If used, the session id this VRF session is in.
Definition: legionNetworkInterface.h:241
Definition: legionEventTranslatorManager.h:28
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
virtual void setEnabled(bool)
Whether or not the communication manager is enabled for receiving information.
Definition: legionNetworkInterface.h:90
bool processSelfReflect() const
Definition: legionNetworkInterface.h:117
bool processRemoteObjectsInParallel() const
Definition: legionNetworkInterface.h:174
Legion::Connection * mySTEConnection
Definition: legionNetworkInterface.h:271
DtCommunicationManager * communicationManager()
The communication manager.
Definition: legionNetworkInterface.h:191
virtual bool publishingOnLegionNetwork() const
Whether or not this interface publishes on the legion network.
Definition: legionNetworkInterface.h:267
int myAppId
Definition: legionNetworkInterface.h:279
class DtRemoteObjectManager:
Definition: remoteObjectManager.h:28
bool myProcessSelfReflect
Definition: legionNetworkInterface.h:289
Definition: objectType.h:27
virtual bool validateScenario(const DtScenario &, DtString &) const
Return false if this scenario is not valid.
Definition: legionNetworkInterface.h:94
virtual bool needsUnpublishedDatabase() const
Return true if this connection uses the simulation database to publish on (as a legion connection doe...
Definition: legionNetworkInterface.h:208
class DtLegionOwnershipTransferManager:
Definition: legionOwnershipTransferManager.h:41
virtual void setRunFullyThreaded(bool)
Whether or not to run fully threaded. Legion is always threaded.
Definition: legionNetworkInterface.h:89
UInt64 GlobalIdentifier
Definition: legionOwnershipTransferManager.h:18
DtNetworkManagerInterface is the base class which all network interfaces must be derived from...
Definition: networkManagerInterface.h:40
Definition: coordSystem.h:54
StateDataByEntityId myStateDataByEntityId
Definition: legionNetworkInterface.h:276
The overall structure of the DtStateData mechanism is: The DtStateData contains a list of double buff...
Definition: stateData.h:336
static DtLegionNetworkInterfaceCreatorFcn theCreatorFunction
Definition: legionNetworkInterface.h:291
static const char * Type()
Definition: legionNetworkInterface.h:67
class DtLegionNetworkInterface:
Definition: legionNetworkInterface.h:53
The DtCommunicationManager class is a convenience class that will create both the DtNetworkInterfaceM...
Definition: communicationManager.h:50
virtual const char * type() const
Type to uniquely identify this manager.
Definition: legionNetworkInterface.h:66
virtual void endScenarioLoad(bool)
Called when ending scenario load. True is passed in to reuse identifiers if network dependent...
Definition: legionNetworkInterface.h:239
makVrfEvents::DtEventManager * eventManager()
Definition: legionNetworkInterface.h:129
virtual void setVrfMessageVersionSupported(int)
If used the message version this VRF session uses.
Definition: legionNetworkInterface.h:242
bool destructing() const
Definition: legionNetworkInterface.h:144
bool myOwnsLegionConnection
Definition: legionNetworkInterface.h:284
bool myDisableRemoteDiscovery
Definition: legionNetworkInterface.h:295
bool myDestructing
Definition: legionNetworkInterface.h:300
DtSimulationAddress mySimulationAddress
Definition: legionNetworkInterface.h:278
DtRemoteObjectManager * myRemoteObjectManager
Definition: legionNetworkInterface.h:294
DtLegionNetworkInterface *(* DtLegionNetworkInterfaceCreatorFcn)(DtStateDataManager *, Legion::Connection *, Legion::Configuration *)
Definition: legionNetworkInterface.h:47
std::set< makVrf::SimStateID > myPublishing
Definition: legionNetworkInterface.h:272
DtLegionEventTranslatorManager * eventTranslatorManager()
Definition: legionNetworkInterface.h:201
DtLegionEventTranslatorManager * myLegionEventTranslatorManager
Definition: legionNetworkInterface.h:283
int myEntityId
Definition: legionNetworkInterface.h:280
DT_DLL_DEBUGDRAWRENDERER void init(makVrv::DtDe &de)
Work function for the plugin initialization.
bool myProcessRemoteObjectsInParallel
Definition: legionNetworkInterface.h:296
const char int mode
Definition: ioapi.h:38
makVrfEvents::DtEventManager * myEventManager
Definition: legionNetworkInterface.h:281
Legion::EventManager * myLegionEventManager
Definition: legionNetworkInterface.h:286
DtStateDataManager * stateDataManager()
Definition: legionNetworkInterface.h:134
virtual void setParameterDatabase(DtVrfParameterDb *)
VRF specific for creating network interfaces from parameter data.
Definition: legionNetworkInterface.h:240
const DtSimulationAddress & simulationAddress() const
Definition: legionNetworkInterface.h:139
Legion::Connection * connection()
Definition: legionNetworkInterface.h:196
This class holds the state data that represents each simulation object in the system.
Definition: stateDataManager.h:71