12 #include "vlutil/vlPerformanceStats.h"
14 #include <tbb/spin_mutex.h>
15 #include <unordered_map>
16 #include <vlpi/metocEnums.h>
23 class DtReflectedDIGuyObject;
29 class DtReflectedAggregate;
34 class DtBaseEntityStateRepository;
38 class DtReflectedActiveSonar;
39 class DtReflectedPropulsionNoise;
40 class DtReflectedEmitterSystem;
42 class DtReflectedDesignator;
43 class DtReflectedRadioTransmitter;
44 class DtReflectedRadioReceiver;
51 #if DtHLA_1516_EVOLVED
52 #include <tbb/queuing_mutex.h>
57 namespace makVrfVrlinkExtToolkit
59 class DtReflectedExtendedAttributesObject;
60 class DtReflectedExtendedAttributesObjectList;
66 class DtRemoteEnvironmentManager;
67 class DtRemoteObjectManager;
69 class DtStateDataManager;
70 class DtRemoteStateComponentNetInterface;
71 class DtVrlinkNetworkInterface;
86 virtual void printReflectedObjectCounts()
const;
92 virtual void setRequestUpdates(
bool shouldRequestUpdates);
94 virtual void beginFrame();
102 virtual void finishFrame();
105 virtual bool stateDataAboutToBeRemoved(
const DtStateData* sd);
110 virtual bool hasDiscoveredObjects()
const;
116 virtual void setDefaultObjectTimeout(
int);
119 return myDefaultObjectTimeout;
121 virtual void setDisableTimeoutProcessing(
bool);
124 return myDisableTimeoutProcessing;
130 virtual bool acceptRemoteEnvironmental(
const DtEntityType& et)
const;
132 virtual void requestUpdatesForRemoteNonVrfObjects()
const;
134 virtual bool waitingToAddObjects()
const;
140 virtual void lostControlOf(DtReflectedDIGuyObject*);
147 virtual void gainedConntrolOfUnknownHlaObject(DtHlaObject*);
154 virtual DtUUID uuidFor(DtHlaObject*)
const;
158 virtual void setEnabled(
bool);
166 return myStateDataManager;
171 return myReflectedLists.reflectedAerodromesList.reflectedList;
176 return myReflectedLists.reflectedEntitiesList.reflectedList;
181 return myReflectedLists.reflectedAggregatesList.reflectedList;
186 return myReflectedLists.reflectedEnvironmentalsList.reflectedList;
191 return myReflectedLists.reflectedDesignatorsList.reflectedList;
196 return myReflectedLists.reflectedActiveSonarList.reflectedList;
201 return myReflectedLists.reflectedPropulsionNoiseList.reflectedList;
206 return myReflectedLists.reflectedRadioTransmitterList.reflectedList;
211 return myReflectedLists.reflectedNavAidTransmitterList.reflectedList;
216 return myReflectedLists.reflectedRadioReceiverList.reflectedList;
221 return myReflectedLists.reflectedDynamicTerrainList.reflectedList;
226 return myReflectedLists.reflectedIffList.reflectedList;
231 return myReflectedLists;
234 virtual bool hasNetworkRepresentation(
const DtUUID&)
const;
237 virtual void setLongScenarioLoadDiscoveryTime(
double);
240 return myLongScenarioLoadDiscoveryTime;
245 virtual void setBulkAddTimeout(
double);
248 return myBulkAddTimeout;
253 return myExerciseConnection;
257 virtual void setStaticObjectDiscoveryTime(
double);
260 return myStaticObjectDiscoveryTime;
263 virtual void setDynamicTerrainStateData(
DtStateData*);
264 virtual bool finishDiscovery();
265 virtual void setNumCallbackThreads(
int);
272 virtual bool isLocal(
const DtBaseEntityStateRepository& stateRep);
274 virtual bool selfReflecting()
const;
283 virtual void createRemoteEnvironmentalsList(DtExerciseConn* exConn);
289 friend class RemoteEntityCreator;
293 friend class RemoteAggregateCreator;
302 virtual void processDesignatorAddedCallback(DtReflectedDesignator * des);
303 virtual void processDesignatorRemovedCallback(DtReflectedDesignator * des);
304 virtual DtBoolean processDesignatorDiscoveryCriteria(DtReflectedDesignator * des);
310 virtual void processActiveSonarAddedCallback(DtReflectedActiveSonar* des);
311 virtual void processActiveSonarRemovedCallback(DtReflectedActiveSonar* des);
312 virtual DtBoolean processActiveSonarDiscoveryCriteria(DtReflectedActiveSonar* des);
314 virtual void processPropulsionNoiseAddedCallback(DtReflectedPropulsionNoise* des);
315 virtual void processPropulsionNoiseRemovedCallback(DtReflectedPropulsionNoise* des);
316 virtual DtBoolean processPropulsionNoiseDiscoveryCriteria(DtReflectedPropulsionNoise* des);
318 virtual void processRadioTransmitterAddedCallback(DtReflectedRadioTransmitter* tran);
319 virtual void processRadioTransmitterRemovedCallback(DtReflectedRadioTransmitter* tran);
320 virtual DtBoolean processRadioTransmitterDiscoveryCriteria(DtReflectedRadioTransmitter*);
324 virtual DtBoolean processNavAidRadioTransmitterDiscoveryCriteria(
DtReflectedNavAid*);
326 virtual void processRadioReceiverAddedCallback(DtReflectedRadioReceiver* tran);
327 virtual void processRadioReceiverRemovedCallback(DtReflectedRadioReceiver* tran);
329 virtual void processIffAddedCallback(DtReflectedIff* des);
330 virtual void processIffRemovedCallback(DtReflectedIff* des);
331 virtual DtBoolean processIffDiscoveryCriteria(DtReflectedIff*);
333 virtual void processEmitterSystemAddedCallback(DtReflectedEmitterSystem* des);
334 virtual void processEmitterSystemRemovedCallback(DtReflectedEmitterSystem* des);
335 virtual DtBoolean processEmitterSystemDiscoveryCriteria(DtReflectedEmitterSystem*);
337 friend class RemoteEnvironmentalCreator;
347 virtual void createRemoteEntitiesList(DtExerciseConn* exConn);
348 virtual void createRemoteAggregatesList(DtExerciseConn* exConn);
349 virtual void createRemoteAerodromesList(DtExerciseConn* exConn);
407 virtual bool processEntityDiscoveryCriteria(
415 virtual bool processAggregateDiscoveryCriteria(
416 DtReflectedAggregate* aggregate);
423 virtual bool processAerodromeDiscoveryCriteria(
429 virtual void createRemoteDesignatorsList(DtExerciseConn* exConn);
430 virtual void createRemoteRectangularPyramidList(DtExerciseConn* exConn);
431 virtual void createRemoteActiveSonarList(DtExerciseConn* exConn);
432 virtual void createRemotePropulsionNoiseList(DtExerciseConn* exConn);
433 virtual void createRemoteRadioTransmitterList(DtExerciseConn* exConn);
434 virtual void createRemoteNavAidTransmitterList(DtExerciseConn* exConn);
435 virtual void createRemoteRadioReceiverList(DtExerciseConn* exConn);
436 virtual void createRemoteEmitterSystemList(DtExerciseConn* exConn);
437 virtual void createRemoteIffList(DtExerciseConn* exConn);
438 virtual void createReflectedDynamicTerrainList(DtExerciseConn* exConn);
441 virtual void createRemoteExtendedAttributesList(DtExerciseConn* exConn);
449 static DtBoolean rectangularPyramidDiscoveryCriteriaCallback(
DtReflectedObject * des,
456 static void designatorAddedCallback(DtReflectedDesignator * des,
463 static void designatorRemovedCallback(DtReflectedDesignator * des,
473 static void activeSonarAddedCallback(DtReflectedActiveSonar* activeSonar,
475 static void activeSonarRemovedCallback(DtReflectedActiveSonar* activeSonar,
477 static DtBoolean activeSonarDiscoveryCriteriaCallback(
480 static void propulsionNoiseAddedCallback(DtReflectedPropulsionNoise* propNoise,
482 static void propulsionNoiseRemovedCallback(DtReflectedPropulsionNoise* propNoise,
484 static void propulsionNoiseChangedCallback(DtReflectedPropulsionNoise* propNoise,
486 static DtBoolean propulsionNoiseDiscoveryCriteriaCallback(
489 static void radioTransmitterAddedCallback(DtReflectedRadioTransmitter* transmitter,
491 static void radioTransmitterRemovedCallback(DtReflectedRadioTransmitter* transmitter,
493 static DtBoolean radioTransmitterDiscoveryCriteriaCallback(
DtReflectedObject* des,
void*);
499 static DtBoolean navAidRadioTransmitterDiscoveryCriteriaCallback(
DtReflectedObject* des,
void*);
501 static void radioReceiverAddedCallback(DtReflectedRadioReceiver* transmitter,
503 static void radioReceiverRemovedCallback(DtReflectedRadioReceiver* transmitter,
506 static void iffAddedCallback(DtReflectedIff* propNoise,
508 static void iffRemovedCallback(DtReflectedIff* propNoise,
510 static DtBoolean iffDiscoveryCriteriaCallback(
513 static void emitterSystemAddedCallback(DtReflectedEmitterSystem* propNoise,
515 static void emitterSystemRemovedCallback(DtReflectedEmitterSystem* propNoise,
517 static DtBoolean emitterSystemDiscoveryCriteriaCallback(
520 static void envProcessAddedCallback(
522 static void envProcessRemovedCallback(
524 static bool envProcessDiscoveryCriteria(
527 virtual void cleanup();
540 static DtBoolean reflectedDynamicTerrainDiscoveryCriteriaCallback(
550 virtual bool createUnhostedComponent(
DtReflectedObject* obj,
const DtString& hostId,
int componentType,
const char* componentInterfaceType);
553 virtual bool createRemoteHostedComponent(
DtReflectedObject* obj,
const DtString& hostId,
int componentType,
const char* componentInterfaceType);
559 virtual DtEntityType standardAggregateTypeToVrfAggregateType(
const DtEntityType& aggType)
const;
563 virtual void checkDiscoveryForHostedObjects();
580 template <
typename T_Exec>
590 typedef std::map<makVrf::SimStateID, std::pair<DtReflectedObject*, DtSimObjectNetInterface*> >
RemoteInterfacesById;
628 bool myQueueJobs =
false;
633 bool myDisableTimeoutProcessing =
false;
642 DtEntityType objectType;
651 mutable double myTimeSinceLastObjectDiscovery = 0.;
652 mutable double myTotalTimeSinceLastAddition = 0.;
653 double myLongScenarioLoadDiscoveryTime = 10.;
654 double myStaticObjectDiscoveryTime = 0.50;
656 mutable int myLastJobCount = 0;
657 double myBulkAddTimeout = 1.0 / 10.0;
int size() const
Definition: remoteObjectManager.h:584
std::map< uintptr_t, ReflectedObjectInformation > ReflectedObjectToComponentMap
Definition: remoteObjectManager.h:603
UUID is a unique ID wrapper class.
Definition: uuid.h:59
DtReflectedPropulsionNoiseList * reflectedPropulsionNoiseList() const
Definition: remoteObjectManager.h:199
DtExerciseConn * myExerciseConnection
Definition: remoteObjectManager.h:573
bool enabled() const
Definition: remoteObjectManager.h:159
Definition: reflectedExtEntity.h:31
std::map< uintptr_t, DtSimObjectNetInterface * > RemoteInterfacesByReflectedObject
Definition: remoteObjectManager.h:606
RemoteInterfacesByUUID myRemoteInterfacesByUUID
Definition: remoteObjectManager.h:610
UnhostedStateData myUnhostedStateData
Definition: remoteObjectManager.h:626
Instances of DtVrfParameterDb are the database of DtVrfObjectParameters objects used in the construct...
Definition: vrfParameterDb.h:41
DtReflectedAerodromeList * reflectedAerodromeList() const
Definition: remoteObjectManager.h:169
Definition: reflectedExtAggregate.h:35
Instances of DtReflectedRectangularPyramid are used to represent a simulated HLAobjectRoot.SensorFieldOfView.RectangularPyramid object reflected across a network.
Definition: reflectedRectangularPyramidDIS.h:33
AwaitingReflectedTransmitters myReflectedRadioTransmitters
Definition: remoteObjectManager.h:622
AwaitingReflectedTransmitters myNavAidReflectedRadioTransmitters
Definition: remoteObjectManager.h:623
DtVrfPublisherContainer< DtSimObjectNetInterface > PublisherContainer
Definition: remoteObjectManager.h:587
virtual double bulkAddTimeout() const
Definition: remoteObjectManager.h:246
ObjectsToCreate myPendingAggregateJobs
Definition: remoteObjectManager.h:648
std::vector< DtStateComponent * > StateComponentVector
Definition: remoteObjectManager.h:614
Instances of this class provide a protocol independent interface to a list of DynamicTerrain in a DIS...
Definition: reflectedDynamicTerrainListDIS.h:24
DtReflectedRadioTransmitterList * reflectedRadioTransmitterList() const
Definition: remoteObjectManager.h:204
int myDefaultObjectTimeout
Definition: remoteObjectManager.h:632
double staticObjectDiscoveryTime() const
Definition: remoteObjectManager.h:258
double longScenarioLoadDiscoveryTime() const
Definition: remoteObjectManager.h:238
Simple asynchronous callback queue.
Definition: vrfCallbackQueue.h:29
Definition: remoteStateComponentNetInterface.h:23
PublisherContainer myInterfaces
Definition: remoteObjectManager.h:589
DtReflectedDesignatorList * reflectedDesignatorList() const
Definition: remoteObjectManager.h:189
std::map< makVrf::SimStateID, std::pair< DtReflectedObject *, DtSimObjectNetInterface * > > RemoteInterfacesById
Definition: remoteObjectManager.h:590
ObjectsToCreate myPendingEntityJobs
Definition: remoteObjectManager.h:647
ReflectedObjectToComponentMap myReflectedObjectToComponentMap
Definition: remoteObjectManager.h:604
DtReflectedEntityList * reflectedEntityList() const
Definition: remoteObjectManager.h:174
class DtReflectedControlObjectList:
Definition: reflectedControlObjectList.h:23
DtUUID uuid
Definition: remoteObjectManager.h:643
class DtRemoteObjectManager:
Definition: remoteObjectManager.h:28
DtStateDataManager * stateDataManager()
Definition: remoteObjectManager.h:164
DtReflectedIffList * reflectedIffList() const
Definition: remoteObjectManager.h:224
DtSimulationAddress mySimulationAddress
Definition: remoteObjectManager.h:578
class DtVrlinkNetworkInterface:
Definition: vrlinkNetworkInterface.h:72
DtReflectedNavAidList * reflectedNavAidTransmitterList() const
Definition: remoteObjectManager.h:209
std::map< DtString, DtStateData * > UnhostedStateData
Definition: remoteObjectManager.h:625
std::set< DtGlobalObjectDesignator > myJustDeleted
Definition: remoteObjectManager.h:636
CreationInfo()
Definition: remoteObjectManager.h:640
DtReflectedRadioReceiverList * reflectedRadioReceiverList() const
Definition: remoteObjectManager.h:214
The overall structure of the DtStateData mechanism is: The DtStateData contains a list of double buff...
Definition: stateData.h:398
InterfacesByStateData myInterfacesByStateData
Definition: remoteObjectManager.h:601
std::map< DtString, StateComponentVector > UnhostedComponents
Definition: remoteObjectManager.h:615
class DtReflectedNavAidList:
Definition: reflectedNavAidListDIS.h:19
int defaultObjectTimeout() const
Definition: remoteObjectManager.h:117
UnhostedComponents myUnhostedComponents
Definition: remoteObjectManager.h:616
#define DT_DLL_vrlinkNetworkInterface
This file is used to determine how to build.
Definition: vrlinkNetworkInterfaceDefines.h:24
DtReflectedObjectLists myReflectedLists
Definition: remoteObjectManager.h:566
DtReflectedActiveSonarList * reflectedActiveSonarList() const
Definition: remoteObjectManager.h:194
RemoteInterfacesById myRemoteInterfacesById
Definition: remoteObjectManager.h:591
DtVrlinkNetworkInterface * myVrlinkNetworkInterface
Definition: remoteObjectManager.h:577
Instances of DtReflectedDynamicTerrain are used to represent a simulated HLAobjectRoot.DynamicTerrain object reflected across a network.
Definition: reflectedDynamicTerrainDIS.h:32
Definition: remoteObjectManager.h:638
DtStateData * myDynamicTerrainStateData
Definition: remoteObjectManager.h:612
RemoteInterfacesByReflectedObject myRemoteInterfacesByReflectedObject
Definition: remoteObjectManager.h:607
DtVrfParameterDb * myParameterDatabase
Definition: remoteObjectManager.h:617
DtExerciseConn * exerciseConnection() const
Definition: remoteObjectManager.h:251
std::map< unsigned long long, std::set< uintptr_t > > InterfacesByStateData
Definition: remoteObjectManager.h:600
The reflected object for a NavAid transmitter.
Definition: reflectedNavAidDIS.h:27
DtTimedSection myDiscoveryTimer
Definition: remoteObjectManager.h:650
Definition: remoteObjectManager.h:581
bool timeoutProcessingDisabled() const
Definition: remoteObjectManager.h:122
ObjectsToCreate myPendingEnvironmentalJobs
Definition: remoteObjectManager.h:649
DtReflectedDynamicTerrainList * reflectedDynamicTerrainList() const
Definition: remoteObjectManager.h:219
Definition: reflectedVrfExtControlObjectList.h:23
tbb::spin_mutex myInterfacesMutex
Definition: remoteObjectManager.h:588
DT_DLL_DEBUGDRAWRENDERER void init(makVrv::DtDe &de)
Work function for the plugin initialization.
std::map< DtReflectedObject *, DtSimObjectNetInterface * > InterfacesByReflectedObjectMap
Definition: remoteObjectManager.h:77
bool myEnabled
Definition: remoteObjectManager.h:576
DtReflectedEnvironmentProcessList * reflectedEnvironmentProcessList() const
Definition: remoteObjectManager.h:184
std::map< DtReflectedObject *, CreationInfo > ObjectsToCreate
Definition: remoteObjectManager.h:646
std::map< DtUUID, DtSimObjectNetInterface * > RemoteInterfacesByUUID
Definition: remoteObjectManager.h:609
const DtReflectedObjectLists & reflectedLists() const
Definition: remoteObjectManager.h:229
Definition: reflectedObjectLists.h:166
std::map< DtString, std::vector< DtReflectedObject * > > AwaitingReflectedTransmitters
Because radios and nav aid are both discovered in their own lists, have a pending list for each to ch...
Definition: remoteObjectManager.h:621
This is a simple base class that will be used to return a pointer to current or next frame state...
Definition: stateComponent.h:294
std::unordered_map< DtUUID, unsigned long long > myStateDataToRemove
Definition: remoteObjectManager.h:630
DtReflectedAggregateList * reflectedAggregateList() const
Definition: remoteObjectManager.h:179
Definition: reflectedVrfExtAggregateList.h:23
This class holds the state data that represents each simulation object in the system.
Definition: stateDataManager.h:73