17 #include <matrix/vlVector.h>
19 #include <vlpi/simulationAddress.h>
22 #include <legionDataStore/dataTypes.h>
24 #include <legionNet/boundary.h>
27 #include <tbb/spin_rw_mutex.h>
31 #include <unordered_map>
46 namespace makVrfEvents
48 class DtTransferRequestEvent;
49 class DtTransferResponseEvent;
55 class DtStateDataManager;
56 class DtLegionEventTranslatorManager;
57 class DtRemoteObjectManager;
58 class DtLegionNetworkInterface;
59 class DtLegionOwnershipTransferManager;
78 virtual void beginFrame(
double)
override;
79 virtual bool preAdvanceFrame()
override;
80 virtual void advanceFrame(
double* networkTime =
nullptr)
override;
82 virtual const char*
type()
const {
return Type(); };
83 static const char*
Type() {
return "legion-network-interface"; };
85 virtual void setInterest(
const DtVector& geocentricCenter,
const DtVector& ll,
const DtVector& ur);
86 virtual void setInterest(
const DtVector& geocentricCenter,
double radius);
87 virtual void setInterest(
const Legion::Boundary&,
bool andIntent =
true);
88 virtual void setIntent(
const Legion::Boundary&);
91 virtual DtU32 scenarioCapabilities()
const override;
92 virtual void setScenarioCapabilities(DtU32)
override;
94 virtual bool selfReflecting()
const;
95 virtual void setSelfReflecting(
bool);
102 virtual bool wantsToSelfReflect(
unsigned int)
const;
105 virtual bool printDataToStream(
const DtUUID&, DtOutputStream&)
const;
108 virtual const DtStateData* stateDataForEntityId(
const DtEntityIdentifier&)
const;
117 virtual void setExerciseStartTime(
double);
124 virtual void setSiteAppId(
int,
int);
127 virtual void removeAndDeleteAll(
const std::set<DtUUID>& except = std::set<DtUUID>());
129 virtual void setSimTime(
double);
130 virtual void setTimeMultiplier(
double);
132 virtual void setNeedsInterestRegionSet(
bool val);
133 virtual bool needsInterestRegionSet()
const;
137 virtual DtString nextEventId(
const DtString& = DtString::nullString())
override;
141 return std::string(
"Legion");
144 virtual void setProcessSelfReflect(
bool b);
147 return myProcessSelfReflect;
159 Legion::Configuration* config = 0);
164 return myEventManager;
169 return myStateDataManager;
174 return mySimulationAddress;
179 return myDestructing;
183 virtual bool typeIsPublishable(
const DtEntityType&)
const;
185 virtual int clientId()
const;
189 virtual Legion::EventManager* legionEventManager();
190 virtual Legion::ControlManager* legionControlManager();
193 virtual UInt64 toGlobalIdentifier(
const DtEntityIdentifier&)
const;
194 virtual DtEntityIdentifier toEntityIdentifier(
UInt64)
const;
199 virtual void setDisableRemoteDiscovery(
bool);
202 return myDisableRemoteDiscovery;
206 virtual void setProcessRemoteObjectsInParallel(
bool);
209 return myProcessRemoteObjectsInParallel;
215 virtual void setNumCallbackThreads(
unsigned);
220 return myOwnershipTransferManager;
226 return myCommunicationManager;
231 return mySTEConnection;
236 return myLegionEventTranslatorManager;
252 virtual void stateDataAboutToBeRemoved(
const DtStateData*);
257 virtual void reserve(
unsigned numToReserve);
260 virtual void printReflectedObjectCounts()
const;
263 virtual void requestUpdatesForRemoteNonVrfObjects()
const;
266 virtual void rediscoverObjects(
const std::set<DtString>& ignore);
271 virtual void startScenarioLoad(
bool);
276 virtual void resetSimulation();
277 virtual void rewindScenario();
283 virtual void pause();
285 virtual void setFrameRateMode(
const DtString&
mode,
double deltaTime,
bool manageTime =
false);
297 virtual bool rediscoverObjects();
302 virtual bool hasNetworkRepresentation(
const DtUUID&)
const {
return true; };
UUID is a unique ID wrapper class.
Definition: uuid.h:59
bool myNeedsInterestSet
Definition: legionNetworkInterface.h:312
tbb::spin_rw_mutex myPublishMutex
Definition: legionNetworkInterface.h:308
unsigned int myNumCallbackThreads
Definition: legionNetworkInterface.h:332
Legion::ControlManager * myLegionControlManager
Definition: legionNetworkInterface.h:322
Instances of DtVrfParameterDb are the database of DtVrfObjectParameters objects used in the construct...
Definition: vrfParameterDb.h:41
virtual bool hasSimulationTime() const
This manager does not deal with sim time.
Definition: legionNetworkInterface.h:294
DtLegionOwnershipTransferManager * ownershipTransferManager()
The transfer manager. Valid after init. Get this to connect for pre transfer from message...
Definition: legionNetworkInterface.h:218
Definition: scenario.h:52
DtCommunicationManager * myCommunicationManager
Definition: legionNetworkInterface.h:327
const Coordinate_System * myCoordinateSystem
Definition: legionNetworkInterface.h:317
virtual std::string protocol() const override
Descriptive text of the network protocol.
Definition: legionNetworkInterface.h:139
DtLegionOwnershipTransferManager * myOwnershipTransferManager
Definition: legionNetworkInterface.h:334
bool disableRemoteDiscovery() const
Definition: legionNetworkInterface.h:200
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:120
#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:274
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:115
bool processSelfReflect() const
Definition: legionNetworkInterface.h:145
bool processRemoteObjectsInParallel() const
Definition: legionNetworkInterface.h:207
Legion::Connection * mySTEConnection
Definition: legionNetworkInterface.h:306
DtCommunicationManager * communicationManager()
The communication manager.
Definition: legionNetworkInterface.h:224
unsigned long long UInt64
Definition: stateDataTypes.h:17
virtual bool publishingOnLegionNetwork() const
Whether or not this interface publishes on the legion network.
Definition: legionNetworkInterface.h:300
virtual bool waitingToAddObjects() const override
Returns true if this manager is waiting to add network objects.
Definition: legionNetworkInterface.h:150
int myAppId
Definition: legionNetworkInterface.h:314
class DtRemoteObjectManager:
Definition: remoteObjectManager.h:28
std::unordered_map< UInt64, const DtStateData * > StateDataByEntityId
Definition: legionNetworkInterface.h:310
bool myProcessSelfReflect
Definition: legionNetworkInterface.h:324
virtual bool validateScenario(const DtScenario &, DtString &) const
Return false if this scenario is not valid.
Definition: legionNetworkInterface.h:122
virtual bool needsUnpublishedDatabase() const
Return true if this connection uses the simulation database to publish on (as a legion connection doe...
Definition: legionNetworkInterface.h:241
class DtLegionOwnershipTransferManager:
Definition: legionOwnershipTransferManager.h:41
virtual void setRunFullyThreaded(bool)
Whether or not to run fully threaded. Legion is always threaded.
Definition: legionNetworkInterface.h:114
UInt64 GlobalIdentifier
Definition: legionOwnershipTransferManager.h:18
DtNetworkManagerInterface is the base class which all network interfaces must be derived from...
Definition: networkManagerInterface.h:43
Definition: coordSystem.h:54
StateDataByEntityId myStateDataByEntityId
Definition: legionNetworkInterface.h:311
The overall structure of the DtStateData mechanism is: The DtStateData contains a list of double buff...
Definition: stateData.h:398
static DtLegionNetworkInterfaceCreatorFcn theCreatorFunction
Definition: legionNetworkInterface.h:326
static const char * Type()
Definition: legionNetworkInterface.h:83
class DtLegionNetworkInterface:
Definition: legionNetworkInterface.h:69
The DtCommunicationManager class is a convenience class that will create both the DtNetworkInterfaceM...
Definition: communicationManager.h:54
virtual const char * type() const
Type to uniquely identify this manager.
Definition: legionNetworkInterface.h:82
virtual void endScenarioLoad(bool)
Called when ending scenario load. True is passed in to reuse identifiers if network dependent...
Definition: legionNetworkInterface.h:272
makVrfEvents::DtEventManager * eventManager()
Definition: legionNetworkInterface.h:162
virtual unsigned int maxNameLengthForType(const DtEntityType &) const
If the network interface supports it, the maximum name of a marking text.
Definition: legionNetworkInterface.h:269
virtual void setVrfMessageVersionSupported(int)
If used the message version this VRF session uses.
Definition: legionNetworkInterface.h:275
bool destructing() const
Definition: legionNetworkInterface.h:177
bool myOwnsLegionConnection
Definition: legionNetworkInterface.h:319
DtU32 myScenarioCapabilities
Definition: legionNetworkInterface.h:336
bool myDisableRemoteDiscovery
Definition: legionNetworkInterface.h:330
bool myDestructing
Definition: legionNetworkInterface.h:335
DtSimulationAddress mySimulationAddress
Definition: legionNetworkInterface.h:313
DtRemoteObjectManager * myRemoteObjectManager
Definition: legionNetworkInterface.h:329
DtLegionNetworkInterface *(* DtLegionNetworkInterfaceCreatorFcn)(DtStateDataManager *, Legion::Connection *, Legion::Configuration *)
Definition: legionNetworkInterface.h:61
std::set< makVrf::SimStateID > myPublishing
Definition: legionNetworkInterface.h:307
DtLegionEventTranslatorManager * eventTranslatorManager()
Definition: legionNetworkInterface.h:234
DtLegionEventTranslatorManager * myLegionEventTranslatorManager
Definition: legionNetworkInterface.h:318
int myEntityId
Definition: legionNetworkInterface.h:315
DT_DLL_DEBUGDRAWRENDERER void init(makVrv::DtDe &de)
Work function for the plugin initialization.
bool myProcessRemoteObjectsInParallel
Definition: legionNetworkInterface.h:331
const char int mode
Definition: ioapi.h:38
makVrfEvents::DtEventManager * myEventManager
Definition: legionNetworkInterface.h:316
DT_DLL_legionNetworkInterface DtVector legionVectorToDtVector(const Legion::Vector3d &lvec)
Legion::EventManager * myLegionEventManager
Definition: legionNetworkInterface.h:321
DtStateDataManager * stateDataManager()
Definition: legionNetworkInterface.h:167
virtual void setParameterDatabase(DtVrfParameterDb *)
VRF specific for creating network interfaces from parameter data.
Definition: legionNetworkInterface.h:273
virtual bool supportsOwnershipTransfer() const override
Returns true if this interface supports ownership transfer.
Definition: legionNetworkInterface.h:97
const DtSimulationAddress & simulationAddress() const
Definition: legionNetworkInterface.h:172
Legion::Connection * connection()
Definition: legionNetworkInterface.h:229
This class holds the state data that represents each simulation object in the system.
Definition: stateDataManager.h:73