12 #include "vlutil/vlPerformanceStats.h"
14 #include <boost/signals2.hpp>
15 #include <tbb/spin_mutex.h>
16 #include <unordered_set>
17 #include <vlpi/metocEnums.h>
26 class DtReflectedAggregate;
31 class DtBaseEntityStateRepository;
35 class DtReflectedActiveSonar;
36 class DtReflectedPropulsionNoise;
37 class DtReflectedEmitterSystem;
39 class DtReflectedDesignator;
40 class DtReflectedRadioTransmitter;
41 class DtReflectedRadioReceiver;
48 #include <boost/signal.hpp>
50 #if DtHLA_1516_EVOLVED
51 #include <tbb/queuing_mutex.h>
52 #include <tbb/atomic.h>
56 namespace makVrfVrlinkExtToolkit
58 class DtReflectedExtendedAttributesObjectList;
64 class DtRemoteEnvironmentManager;
65 class DtRemoteObjectManager;
67 class DtStateDataManager;
68 class DtRemoteStateComponentNetInterface;
69 class DtVrlinkNetworkInterface;
85 virtual void printReflectedObjectCounts()
const;
91 virtual void setRequestUpdates(
bool shouldRequestUpdates);
93 virtual void beginFrame();
101 virtual void finishFrame();
104 virtual bool stateDataAboutToBeRemoved(
const DtStateData* sd);
109 virtual bool hasDiscoveredObjects()
const;
112 virtual void setDefaultObjectTimeout(
int);
115 return myDefaultObjectTimeout;
117 virtual void setDisableTimeoutProcessing(
bool);
120 return myDisableTimeoutProcessing;
126 virtual bool acceptRemoteEnvironmental(
const DtEntityType& et)
const;
128 virtual void requestUpdatesForRemoteNonVrfObjects()
const;
131 virtual void setEnabled(
bool);
139 return myStateDataManager;
144 return myReflectedLists.reflectedAerodromesList.reflectedList;
149 return myReflectedLists.reflectedEntitiesList.reflectedList;
154 return myReflectedLists.reflectedAggregatesList.reflectedList;
159 return myReflectedLists.reflectedEnvironmentalsList.reflectedList;
164 return myReflectedLists.reflectedDesignatorsList.reflectedList;
169 return myReflectedLists.reflectedActiveSonarList.reflectedList;
174 return myReflectedLists.reflectedPropulsionNoiseList.reflectedList;
179 return myReflectedLists.reflectedRadioTransmitterList.reflectedList;
184 return myReflectedLists.reflectedNavAidTransmitterList.reflectedList;
189 return myReflectedLists.reflectedRadioReceiverList.reflectedList;
194 return myReflectedLists.reflectedDynamicTerrainList.reflectedList;
199 return myReflectedLists.reflectedIffList.reflectedList;
204 return myReflectedLists;
208 virtual void setLongScenarioLoadDiscoveryTime(
double);
211 return myLongScenarioLoadDiscoveryTime;
216 return myExerciseConnection;
220 virtual void setStaticObjectDiscoveryTime(
double);
223 return myStaticObjectDiscoveryTime;
226 virtual void setDynamicTerrainStateData(
DtStateData*);
227 virtual void finishDiscovery();
228 virtual void setNumCallbackThreads(
int);
230 virtual bool hasDiscoveryJobs()
const;
239 virtual bool isLocal(
const DtBaseEntityStateRepository& stateRep);
246 virtual bool selfReflecting()
const;
255 virtual void createRemoteEnvironmentalsList(DtExerciseConn* exConn);
261 friend class RemoteEntityCreator;
265 friend class RemoteAggregateCreator;
274 virtual void processDesignatorAddedCallback(DtReflectedDesignator * des);
275 virtual void processDesignatorRemovedCallback(DtReflectedDesignator * des);
276 virtual DtBoolean processDesignatorDiscoveryCriteria(DtReflectedDesignator * des);
278 virtual void processActiveSonarAddedCallback(DtReflectedActiveSonar* des);
279 virtual void processActiveSonarRemovedCallback(DtReflectedActiveSonar* des);
280 virtual DtBoolean processActiveSonarDiscoveryCriteria(DtReflectedActiveSonar* des);
282 virtual void processPropulsionNoiseAddedCallback(DtReflectedPropulsionNoise* des);
283 virtual void processPropulsionNoiseRemovedCallback(DtReflectedPropulsionNoise* des);
284 virtual DtBoolean processPropulsionNoiseDiscoveryCriteria(DtReflectedPropulsionNoise* des);
286 virtual void processRadioTransmitterAddedCallback(DtReflectedRadioTransmitter* tran);
287 virtual void processRadioTransmitterRemovedCallback(DtReflectedRadioTransmitter* tran);
288 virtual DtBoolean processRadioTransmitterDiscoveryCriteria(DtReflectedRadioTransmitter*);
292 virtual DtBoolean processNavAidRadioTransmitterDiscoveryCriteria(
DtReflectedNavAid*);
294 virtual void processRadioReceiverAddedCallback(DtReflectedRadioReceiver* tran);
295 virtual void processRadioReceiverRemovedCallback(DtReflectedRadioReceiver* tran);
297 virtual void processIffAddedCallback(DtReflectedIff* des);
298 virtual void processIffRemovedCallback(DtReflectedIff* des);
299 virtual DtBoolean processIffDiscoveryCriteria(DtReflectedIff*);
301 virtual void processEmitterSystemAddedCallback(DtReflectedEmitterSystem* des);
302 virtual void processEmitterSystemRemovedCallback(DtReflectedEmitterSystem* des);
303 virtual DtBoolean processEmitterSystemDiscoveryCriteria(DtReflectedEmitterSystem*);
305 friend class RemoteEnvironmentalCreator;
308 virtual void startingJob();
309 virtual void stoppingJob();
317 virtual void createRemoteEntitiesList(DtExerciseConn* exConn);
318 virtual void createRemoteAggregatesList(DtExerciseConn* exConn);
319 virtual void createRemoteAerodromesList(DtExerciseConn* exConn);
370 virtual bool processEntityDiscoveryCriteria(
378 virtual bool processAggregateDiscoveryCriteria(
379 DtReflectedAggregate* aggregate);
384 virtual void createRemoteDesignatorsList(DtExerciseConn* exConn);
386 virtual void createRemoteActiveSonarList(DtExerciseConn* exConn);
387 virtual void createRemotePropulsionNoiseList(DtExerciseConn* exConn);
388 virtual void createRemoteRadioTransmitterList(DtExerciseConn* exConn);
389 virtual void createRemoteNavAidTransmitterList(DtExerciseConn* exConn);
390 virtual void createRemoteRadioReceiverList(DtExerciseConn* exConn);
391 virtual void createRemoteEmitterSystemList(DtExerciseConn* exConn);
392 virtual void createRemoteIffList(DtExerciseConn* exConn);
393 virtual void createReflectedDynamicTerrainList(DtExerciseConn* exConn);
396 virtual void createRemoteExtendedAttributesList(DtExerciseConn* exConn);
400 static void designatorAddedCallback(DtReflectedDesignator * des,
411 static void designatorRemovedCallback(DtReflectedDesignator * des,
421 static void activeSonarAddedCallback(DtReflectedActiveSonar* activeSonar,
423 static void activeSonarRemovedCallback(DtReflectedActiveSonar* activeSonar,
425 static DtBoolean activeSonarDiscoveryCriteriaCallback(
428 static void propulsionNoiseAddedCallback(DtReflectedPropulsionNoise* propNoise,
430 static void propulsionNoiseRemovedCallback(DtReflectedPropulsionNoise* propNoise,
432 static void propulsionNoiseChangedCallback(DtReflectedPropulsionNoise* propNoise,
434 static DtBoolean propulsionNoiseDiscoveryCriteriaCallback(
437 static void radioTransmitterAddedCallback(DtReflectedRadioTransmitter* transmitter,
439 static void radioTransmitterRemovedCallback(DtReflectedRadioTransmitter* transmitter,
441 static DtBoolean radioTransmitterDiscoveryCriteriaCallback(
DtReflectedObject* des,
void*);
447 static DtBoolean navAidRadioTransmitterDiscoveryCriteriaCallback(
DtReflectedObject* des,
void*);
449 static void radioReceiverAddedCallback(DtReflectedRadioReceiver* transmitter,
451 static void radioReceiverRemovedCallback(DtReflectedRadioReceiver* transmitter,
454 static void iffAddedCallback(DtReflectedIff* propNoise,
456 static void iffRemovedCallback(DtReflectedIff* propNoise,
458 static DtBoolean iffDiscoveryCriteriaCallback(
461 static void emitterSystemAddedCallback(DtReflectedEmitterSystem* propNoise,
463 static void emitterSystemRemovedCallback(DtReflectedEmitterSystem* propNoise,
465 static DtBoolean emitterSystemDiscoveryCriteriaCallback(
468 static void envProcessAddedCallback(
470 static void envProcessRemovedCallback(
472 static bool envProcessDiscoveryCriteria(
475 virtual void cleanup();
488 static DtBoolean reflectedDynamicTerrainDiscoveryCriteriaCallback(
498 virtual bool createUnhostedComponent(
DtReflectedObject* obj,
const DtString& hostId,
int componentType,
const char* componentInterfaceType);
501 virtual bool createRemoteHostedComponent(
DtReflectedObject* obj,
const DtString& hostId,
int componentType,
const char* componentInterfaceType);
507 virtual DtEntityType standardAggregateTypeToVrfAggregateType(
const DtEntityType& aggType)
const;
511 virtual void checkDiscoveryForHostedObjects();
528 template <
typename T_Exec>
538 typedef std::map<makVrf::SimStateID, std::pair<DtReflectedObject*, DtSimObjectNetInterface*> >
RemoteInterfacesById;
575 bool myDisableTimeoutProcessing =
false;
595 unsigned int myLastNumberOfEntities = 0;
596 unsigned int myLastNumberOfAggregates = 0;
597 unsigned int myLastNumberOfEnvironmentals = 0;
598 double myTimeSinceLastObjectDiscovery = 0.;
599 double myTotalTimeSinceLastAddition = 0.;
600 double myLongScenarioLoadDiscoveryTime = 10.;
601 double myStaticObjectDiscoveryTime = 0.25;
int size() const
Definition: remoteObjectManager.h:532
std::map< uintptr_t, ReflectedObjectInformation > ReflectedObjectToComponentMap
Definition: remoteObjectManager.h:548
UUID is a unique ID wrapper class.
Definition: uuid.h:59
DtReflectedPropulsionNoiseList * reflectedPropulsionNoiseList() const
Definition: remoteObjectManager.h:172
DtExerciseConn * myExerciseConnection
Definition: remoteObjectManager.h:521
bool enabled() const
Definition: remoteObjectManager.h:132
Definition: reflectedExtEntity.h:31
std::map< uintptr_t, DtSimObjectNetInterface * > RemoteInterfacesByReflectedObject
Definition: remoteObjectManager.h:551
UnhostedStateData myUnhostedStateData
Definition: remoteObjectManager.h:568
Instances of DtVrfParameterDb are the database of DtVrfObjectParameters objects used in the construct...
Definition: vrfParameterDb.h:40
DtReflectedAerodromeList * reflectedAerodromeList() const
Definition: remoteObjectManager.h:142
Definition: reflectedExtAggregate.h:35
AwaitingReflectedTransmitters myReflectedRadioTransmitters
Definition: remoteObjectManager.h:564
AwaitingReflectedTransmitters myNavAidReflectedRadioTransmitters
Definition: remoteObjectManager.h:565
DtVrfPublisherContainer< DtSimObjectNetInterface > PublisherContainer
Definition: remoteObjectManager.h:535
ObjectsToCreate myPendingAggregateJobs
Definition: remoteObjectManager.h:592
DtVrfCallbackQueue myJobProcessor
Definition: remoteObjectManager.h:570
std::vector< DtStateComponent * > StateComponentVector
Definition: remoteObjectManager.h:556
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:177
int myDefaultObjectTimeout
Definition: remoteObjectManager.h:574
double staticObjectDiscoveryTime() const
Definition: remoteObjectManager.h:221
double longScenarioLoadDiscoveryTime() const
Definition: remoteObjectManager.h:209
Simple asynchronous callback queue.
Definition: vrfCallbackQueue.h:32
Definition: remoteStateComponentNetInterface.h:23
PublisherContainer myInterfaces
Definition: remoteObjectManager.h:537
DtReflectedDesignatorList * reflectedDesignatorList() const
Definition: remoteObjectManager.h:162
std::map< makVrf::SimStateID, std::pair< DtReflectedObject *, DtSimObjectNetInterface * > > RemoteInterfacesById
Definition: remoteObjectManager.h:538
ObjectsToCreate myPendingEntityJobs
Definition: remoteObjectManager.h:591
ReflectedObjectToComponentMap myReflectedObjectToComponentMap
Definition: remoteObjectManager.h:549
DtReflectedEntityList * reflectedEntityList() const
Definition: remoteObjectManager.h:147
class DtReflectedControlObjectList:
Definition: reflectedControlObjectList.h:23
DtUUID uuid
Definition: remoteObjectManager.h:587
class DtRemoteObjectManager:
Definition: remoteObjectManager.h:28
DtStateDataManager * stateDataManager()
Definition: remoteObjectManager.h:137
DtReflectedIffList * reflectedIffList() const
Definition: remoteObjectManager.h:197
DtSimulationAddress mySimulationAddress
Definition: remoteObjectManager.h:526
class DtVrlinkNetworkInterface:
Definition: vrlinkNetworkInterface.h:60
DtReflectedNavAidList * reflectedNavAidTransmitterList() const
Definition: remoteObjectManager.h:182
std::map< DtString, DtStateData * > UnhostedStateData
Definition: remoteObjectManager.h:567
std::set< DtGlobalObjectDesignator > myJustDeleted
Definition: remoteObjectManager.h:579
Definition: objectType.h:27
std::map< makVrf::SimStateID, InterfacesByReflectedObjectMap > RemoteInterfacesMapById
Definition: remoteObjectManager.h:76
CreationInfo()
Definition: remoteObjectManager.h:584
tbb::atomic< int > myJobCount
Definition: remoteObjectManager.h:580
std::set< DtReflectedObject * > myConvertingToLocal
Definition: remoteObjectManager.h:576
DtReflectedRadioReceiverList * reflectedRadioReceiverList() const
Definition: remoteObjectManager.h:187
The overall structure of the DtStateData mechanism is: The DtStateData contains a list of double buff...
Definition: stateData.h:339
std::unordered_set< unsigned long long > myStateDataToRemove
Definition: remoteObjectManager.h:572
std::map< DtString, StateComponentVector > UnhostedComponents
Definition: remoteObjectManager.h:557
class DtReflectedNavAidList:
Definition: reflectedNavAidListDIS.h:19
int defaultObjectTimeout() const
Definition: remoteObjectManager.h:113
UnhostedComponents myUnhostedComponents
Definition: remoteObjectManager.h:558
#define DT_DLL_vrlinkNetworkInterface
This file is used to determine how to build.
Definition: vrlinkNetworkInterfaceDefines.h:24
DtReflectedObjectLists myReflectedLists
Definition: remoteObjectManager.h:514
DtReflectedActiveSonarList * reflectedActiveSonarList() const
Definition: remoteObjectManager.h:167
RemoteInterfacesById myRemoteInterfacesById
Definition: remoteObjectManager.h:539
DtVrlinkNetworkInterface * myVrlinkNetworkInterface
Definition: remoteObjectManager.h:525
Instances of DtReflectedDynamicTerrain are used to represent a simulated HLAobjectRoot.DynamicTerrain object reflected across a network.
Definition: reflectedDynamicTerrainDIS.h:32
Definition: remoteObjectManager.h:582
DtStateData * myDynamicTerrainStateData
Definition: remoteObjectManager.h:554
RemoteInterfacesByReflectedObject myRemoteInterfacesByReflectedObject
Definition: remoteObjectManager.h:552
DtVrfParameterDb * myParameterDatabase
Definition: remoteObjectManager.h:559
DtExerciseConn * exerciseConnection() const
Definition: remoteObjectManager.h:214
The reflected object for a NavAid transmitter.
Definition: reflectedNavAidDIS.h:27
DtTimedSection myDiscoveryTimer
Definition: remoteObjectManager.h:594
Definition: remoteObjectManager.h:529
bool timeoutProcessingDisabled() const
Definition: remoteObjectManager.h:118
ObjectsToCreate myPendingEnvironmentalJobs
Definition: remoteObjectManager.h:593
DtReflectedDynamicTerrainList * reflectedDynamicTerrainList() const
Definition: remoteObjectManager.h:192
Definition: reflectedVrfExtControlObjectList.h:23
tbb::spin_mutex myInterfacesMutex
Definition: remoteObjectManager.h:536
DT_DLL_DEBUGDRAWRENDERER void init(makVrv::DtDe &de)
Work function for the plugin initialization.
std::map< DtReflectedObject *, DtSimObjectNetInterface * > InterfacesByReflectedObjectMap
Definition: remoteObjectManager.h:75
bool myEnabled
Definition: remoteObjectManager.h:524
DtReflectedEnvironmentProcessList * reflectedEnvironmentProcessList() const
Definition: remoteObjectManager.h:157
std::map< DtReflectedObject *, CreationInfo > ObjectsToCreate
Definition: remoteObjectManager.h:590
const DtReflectedObjectLists & reflectedLists() const
Definition: remoteObjectManager.h:202
Definition: reflectedObjectLists.h:148
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:563
This is a simple base class that will be used to return a pointer to current or next frame state...
Definition: stateComponent.h:291
DtReflectedAggregateList * reflectedAggregateList() const
Definition: remoteObjectManager.h:152
Definition: reflectedVrfExtAggregateList.h:23
This class holds the state data that represents each simulation object in the system.
Definition: stateDataManager.h:73