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);
99 virtual void setSiteAppId(
int,
int);
102 virtual void removeAndDeleteAll();
104 virtual void setSimTime(
double);
105 virtual void setTimeMultiplier(
double);
107 virtual void setNeedsInterestRegionSet(
bool val);
108 virtual bool needsInterestRegionSet()
const;
112 virtual DtString nextEventId(
const DtString& = DtString::nullString())
override;
116 return std::string(
"Legion");
119 virtual void setProcessSelfReflect(
bool b);
122 return myProcessSelfReflect;
129 Legion::Configuration* config = 0);
134 return myEventManager;
139 return myStateDataManager;
144 return mySimulationAddress;
149 return myDestructing;
153 virtual bool typeIsPublishable(
const DtEntityType&)
const;
155 virtual int clientId()
const;
159 virtual Legion::EventManager* legionEventManager();
160 virtual Legion::ControlManager* legionControlManager();
163 virtual UInt64 toGlobalIdentifier(
const DtEntityIdentifier&)
const;
164 virtual DtEntityIdentifier toEntityIdentifier(
UInt64)
const;
169 virtual void setDisableRemoteDiscovery(
bool);
172 return myDisableRemoteDiscovery;
176 virtual void setProcessRemoteObjectsInParallel(
bool);
179 return myProcessRemoteObjectsInParallel;
185 virtual void setNumCallbackThreads(
unsigned);
190 return myOwnershipTransferManager;
196 return myCommunicationManager;
201 return mySTEConnection;
206 return myLegionEventTranslatorManager;
222 virtual void stateDataAboutToBeRemoved(
const DtStateData*);
227 virtual void reserve(
unsigned numToReserve);
230 virtual void printReflectedObjectCounts()
const;
233 virtual void requestUpdatesForRemoteNonVrfObjects()
const;
236 virtual void rediscoverObjects(
const std::set<DtString>& ignore);
241 virtual void startScenarioLoad(
bool);
246 virtual void resetSimulation();
247 virtual void rewindScenario();
253 virtual void pause();
255 virtual void setFrameRateMode(
const DtString&
mode,
double deltaTime,
bool manageTime =
false);
267 virtual bool rediscoverObjects();
UUID is a unique ID wrapper class.
Definition: uuid.h:59
bool myNeedsInterestSet
Definition: legionNetworkInterface.h:280
tbb::spin_rw_mutex myPublishMutex
Definition: legionNetworkInterface.h:276
unsigned int myNumCallbackThreads
Definition: legionNetworkInterface.h:300
Legion::ControlManager * myLegionControlManager
Definition: legionNetworkInterface.h:290
Instances of DtVrfParameterDb are the database of DtVrfObjectParameters objects used in the construct...
Definition: vrfParameterDb.h:40
virtual bool hasSimulationTime() const
This manager does not deal with sim time.
Definition: legionNetworkInterface.h:264
DtLegionOwnershipTransferManager * ownershipTransferManager()
The transfer manager. Valid after init. Get this to connect for pre transfer from message...
Definition: legionNetworkInterface.h:188
Definition: scenario.h:52
DtCommunicationManager * myCommunicationManager
Definition: legionNetworkInterface.h:295
boost::unordered_map< UInt64, const DtStateData * > StateDataByEntityId
Definition: legionNetworkInterface.h:278
const Coordinate_System * myCoordinateSystem
Definition: legionNetworkInterface.h:285
virtual std::string protocol() const override
Descriptive text of the network protocol.
Definition: legionNetworkInterface.h:114
DtLegionOwnershipTransferManager * myOwnershipTransferManager
Definition: legionNetworkInterface.h:302
bool disableRemoteDiscovery() const
Definition: legionNetworkInterface.h:170
virtual unsigned int maxNameLengthForType(const DtObjectType &) const
If the network interface supports it, the maximum name of a marking text.
Definition: legionNetworkInterface.h:239
virtual void reserveEntityId(const DtEntityIdentifier &)
Reserves the entity id such that if a new object without an entity id comes in, it will not use any o...
Definition: legionNetworkInterface.h:95
#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:244
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:120
bool processRemoteObjectsInParallel() const
Definition: legionNetworkInterface.h:177
Legion::Connection * mySTEConnection
Definition: legionNetworkInterface.h:274
DtCommunicationManager * communicationManager()
The communication manager.
Definition: legionNetworkInterface.h:194
virtual bool publishingOnLegionNetwork() const
Whether or not this interface publishes on the legion network.
Definition: legionNetworkInterface.h:270
int myAppId
Definition: legionNetworkInterface.h:282
class DtRemoteObjectManager:
Definition: remoteObjectManager.h:28
bool myProcessSelfReflect
Definition: legionNetworkInterface.h:292
Definition: objectType.h:27
virtual bool validateScenario(const DtScenario &, DtString &) const
Return false if this scenario is not valid.
Definition: legionNetworkInterface.h:97
virtual bool needsUnpublishedDatabase() const
Return true if this connection uses the simulation database to publish on (as a legion connection doe...
Definition: legionNetworkInterface.h:211
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:42
Definition: coordSystem.h:54
StateDataByEntityId myStateDataByEntityId
Definition: legionNetworkInterface.h:279
The overall structure of the DtStateData mechanism is: The DtStateData contains a list of double buff...
Definition: stateData.h:339
static DtLegionNetworkInterfaceCreatorFcn theCreatorFunction
Definition: legionNetworkInterface.h:294
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:51
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:242
makVrfEvents::DtEventManager * eventManager()
Definition: legionNetworkInterface.h:132
unsigned long long UInt64
Definition: stateDataTypes.h:17
virtual void setVrfMessageVersionSupported(int)
If used the message version this VRF session uses.
Definition: legionNetworkInterface.h:245
bool destructing() const
Definition: legionNetworkInterface.h:147
bool myOwnsLegionConnection
Definition: legionNetworkInterface.h:287
bool myDisableRemoteDiscovery
Definition: legionNetworkInterface.h:298
bool myDestructing
Definition: legionNetworkInterface.h:303
DtSimulationAddress mySimulationAddress
Definition: legionNetworkInterface.h:281
DtRemoteObjectManager * myRemoteObjectManager
Definition: legionNetworkInterface.h:297
DtLegionNetworkInterface *(* DtLegionNetworkInterfaceCreatorFcn)(DtStateDataManager *, Legion::Connection *, Legion::Configuration *)
Definition: legionNetworkInterface.h:47
std::set< makVrf::SimStateID > myPublishing
Definition: legionNetworkInterface.h:275
DtLegionEventTranslatorManager * eventTranslatorManager()
Definition: legionNetworkInterface.h:204
DtLegionEventTranslatorManager * myLegionEventTranslatorManager
Definition: legionNetworkInterface.h:286
int myEntityId
Definition: legionNetworkInterface.h:283
DT_DLL_DEBUGDRAWRENDERER void init(makVrv::DtDe &de)
Work function for the plugin initialization.
bool myProcessRemoteObjectsInParallel
Definition: legionNetworkInterface.h:299
const char int mode
Definition: ioapi.h:38
makVrfEvents::DtEventManager * myEventManager
Definition: legionNetworkInterface.h:284
Legion::EventManager * myLegionEventManager
Definition: legionNetworkInterface.h:289
DtStateDataManager * stateDataManager()
Definition: legionNetworkInterface.h:137
virtual void setParameterDatabase(DtVrfParameterDb *)
VRF specific for creating network interfaces from parameter data.
Definition: legionNetworkInterface.h:243
const DtSimulationAddress & simulationAddress() const
Definition: legionNetworkInterface.h:142
Legion::Connection * connection()
Definition: legionNetworkInterface.h:199
This class holds the state data that represents each simulation object in the system.
Definition: stateDataManager.h:73