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 return std::string(
"Legion");
112 virtual void setProcessSelfReflect(
bool b);
115 return myProcessSelfReflect;
122 Legion::Configuration* config = 0);
127 return myEventManager;
132 return myStateDataManager;
137 return mySimulationAddress;
142 return myDestructing;
146 virtual bool typeIsPublishable(
const DtEntityType&)
const;
148 virtual int clientId()
const;
152 virtual Legion::EventManager* legionEventManager();
153 virtual Legion::ControlManager* legionControlManager();
156 virtual UInt64 toGlobalIdentifier(
const DtEntityIdentifier&)
const;
157 virtual DtEntityIdentifier toEntityIdentifier(
UInt64)
const;
162 virtual void setDisableRemoteDiscovery(
bool);
165 return myDisableRemoteDiscovery;
169 virtual void setProcessRemoteObjectsInParallel(
bool);
172 return myProcessRemoteObjectsInParallel;
178 virtual void setNumCallbackThreads(
unsigned);
183 return myOwnershipTransferManager;
189 return myCommunicationManager;
194 return mySTEConnection;
199 return myLegionEventTranslatorManager;
215 virtual void stateDataAboutToBeRemoved(
const DtStateData*);
220 virtual void reserve(
unsigned numToReserve);
223 virtual void printReflectedObjectCounts()
const;
226 virtual void requestUpdatesForRemoteNonVrfObjects()
const;
229 virtual void rediscoverObjects(
const std::set<DtString>& ignore);
234 virtual void startScenarioLoad(
bool);
239 virtual void resetSimulation();
240 virtual void rewindScenario();
246 virtual void pause();
248 virtual void setFrameRateMode(
const DtString&
mode,
double deltaTime,
bool manageTime =
false);
260 virtual bool rediscoverObjects();
UUID is a unique ID wrapper class.
Definition: rwUUID.h:226
bool myNeedsInterestSet
Definition: legionNetworkInterface.h:273
tbb::spin_rw_mutex myPublishMutex
Definition: legionNetworkInterface.h:269
unsigned int myNumCallbackThreads
Definition: legionNetworkInterface.h:293
Legion::ControlManager * myLegionControlManager
Definition: legionNetworkInterface.h:283
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:257
DtLegionOwnershipTransferManager * ownershipTransferManager()
The transfer manager. Valid after init. Get this to connect for pre transfer from message...
Definition: legionNetworkInterface.h:181
Definition: scenario.h:52
DtCommunicationManager * myCommunicationManager
Definition: legionNetworkInterface.h:288
boost::unordered_map< UInt64, const DtStateData * > StateDataByEntityId
Definition: legionNetworkInterface.h:271
const Coordinate_System * myCoordinateSystem
Definition: legionNetworkInterface.h:278
virtual std::string protocol() const override
Descriptive text of the network protocol.
Definition: legionNetworkInterface.h:107
DtLegionOwnershipTransferManager * myOwnershipTransferManager
Definition: legionNetworkInterface.h:295
bool disableRemoteDiscovery() const
Definition: legionNetworkInterface.h:163
virtual unsigned int maxNameLengthForType(const DtObjectType &) const
If the network interface supports it, the maximum name of a marking text.
Definition: legionNetworkInterface.h:232
#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:237
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:113
bool processRemoteObjectsInParallel() const
Definition: legionNetworkInterface.h:170
Legion::Connection * mySTEConnection
Definition: legionNetworkInterface.h:267
DtCommunicationManager * communicationManager()
The communication manager.
Definition: legionNetworkInterface.h:187
virtual bool publishingOnLegionNetwork() const
Whether or not this interface publishes on the legion network.
Definition: legionNetworkInterface.h:263
int myAppId
Definition: legionNetworkInterface.h:275
class DtRemoteObjectManager:
Definition: remoteObjectManager.h:28
bool myProcessSelfReflect
Definition: legionNetworkInterface.h:285
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:204
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:272
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:287
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:235
makVrfEvents::DtEventManager * eventManager()
Definition: legionNetworkInterface.h:125
virtual void setVrfMessageVersionSupported(int)
If used the message version this VRF session uses.
Definition: legionNetworkInterface.h:238
bool destructing() const
Definition: legionNetworkInterface.h:140
bool myOwnsLegionConnection
Definition: legionNetworkInterface.h:280
bool myDisableRemoteDiscovery
Definition: legionNetworkInterface.h:291
bool myDestructing
Definition: legionNetworkInterface.h:296
DtSimulationAddress mySimulationAddress
Definition: legionNetworkInterface.h:274
DtRemoteObjectManager * myRemoteObjectManager
Definition: legionNetworkInterface.h:290
DtLegionNetworkInterface *(* DtLegionNetworkInterfaceCreatorFcn)(DtStateDataManager *, Legion::Connection *, Legion::Configuration *)
Definition: legionNetworkInterface.h:47
std::set< makVrf::SimStateID > myPublishing
Definition: legionNetworkInterface.h:268
DtLegionEventTranslatorManager * eventTranslatorManager()
Definition: legionNetworkInterface.h:197
DtLegionEventTranslatorManager * myLegionEventTranslatorManager
Definition: legionNetworkInterface.h:279
int myEntityId
Definition: legionNetworkInterface.h:276
DT_DLL_DEBUGDRAWRENDERER void init(makVrv::DtDe &de)
Work function for the plugin initialization.
bool myProcessRemoteObjectsInParallel
Definition: legionNetworkInterface.h:292
const char int mode
Definition: ioapi.h:38
makVrfEvents::DtEventManager * myEventManager
Definition: legionNetworkInterface.h:277
Legion::EventManager * myLegionEventManager
Definition: legionNetworkInterface.h:282
DtStateDataManager * stateDataManager()
Definition: legionNetworkInterface.h:130
virtual void setParameterDatabase(DtVrfParameterDb *)
VRF specific for creating network interfaces from parameter data.
Definition: legionNetworkInterface.h:236
const DtSimulationAddress & simulationAddress() const
Definition: legionNetworkInterface.h:135
Legion::Connection * connection()
Definition: legionNetworkInterface.h:192
This class holds the state data that represents each simulation object in the system.
Definition: stateDataManager.h:71