![]() |
VR-Forces Developer's Guide
|
This class holds the state data that represents each simulation object in the system.
Classes | |
| struct | ComponentRemoval |
| struct | StateComponent |
Public Types | |
| enum | FrameStatus { FrameStatus::Normal = 0, FrameStatus::SkippedBeginFrame, FrameStatus::SkipAdvanceFrame } |
| typedef std::set< const DtFrameStateInterface * > | CurrentFrameStates |
| using | PreAddCallback = boost::function< bool(DtStateData *)> |
| typedef boost::signals2::signal< void(DtStateComponent *)> | StateComponentSignal |
| typedef std::vector < DtStateData * > | StateData |
| using | StateDataCreatorFcn = DtStateData *(*)(makVrf::SimStateID, Legion::SimulationDatabase *, DtStateDataManager *) |
| using | RemoteStateDataCreatorFcn = DtStateData *(*)(makVrf::SimStateID, UInt64 legionId, Legion::SimulationDatabase *, DtStateDataManager *) |
| typedef std::unordered_map < UInt64, DtStateData * > | StateDataByUniqueId |
Public Member Functions | |
| DtStateDataManager (Legion::SimulationDatabase *=nullptr, int threadPoolSize=-1, unsigned int clientId=0) | |
| virtual | ~DtStateDataManager () |
| virtual DtStateData * | createStateData (bool isLocal, const DtEntityType &, const DtUUID &uuid=DtUUID(), int publishFlag=0, PreAddCallback callback=0, const DtEntityIdentifier &entId=DtEntityIdentifier::nullId(), bool addToSimObjectManager=true, const DtString &globalId=DtString::nullString()) |
| virtual void | setParameterDatabase (DtVrfParameterDb *) |
| DtVrfParameterDb * | parameterDatabase () const |
| DtVrfCallbackQueue & | jobProcessor () |
| virtual DtStateData * | createStateData (Legion::UInt64 legionHandle, PreAddCallback callback=0) |
| virtual void | removeAndDeleteAll (const std::set< DtUUID > &except=std::set< DtUUID >()) |
| virtual void | removeStateData (DtStateData *) |
| virtual void | removeStateData (const DtUUID &) |
| virtual void | removeStateDataByStateId (makVrf::SimStateID) |
| virtual void | removeStateDataByUniqueId (unsigned long long) |
| virtual void | mapStateDataByUniqueId (unsigned long long, DtStateData *) |
| virtual void | unmapStateDataByUniqueId (unsigned long long) |
| virtual void | beginFrame (double simTime) |
| virtual void | advanceFrame () |
| virtual DtStateData * | advanceFrameFor (unsigned long long uniqueId) |
| virtual void | registerLegionComponents (Legion::SimulationDatabase *) |
| Legion::EventManager * | eventManager () |
| Legion::SimulationDatabase * | database () |
| Legion::SimulationDatabase * | unpublishedDatabase () |
| virtual void | aerodromeDiscovered (DtStateData *) |
| virtual void | entityDiscovered (DtStateData *) |
| virtual void | environmentalDiscovered (DtStateData *) |
| virtual void | unitDiscovered (DtStateData *) |
| virtual void | setBlockOnAdvanceFrameJobs (bool) |
| bool | blockOnAdvanceFrameJobs () const |
| virtual bool | hasOutstandingAdvanceFrameJobs () const |
| virtual void | reserve (unsigned int) |
| template<typename T_Class > | |
| void | handleDataUpdated (const std::vector< typename Legion::SetView< T_Class >::InstanceUpdateData > &instanceList) |
| template<typename T_Class > | |
| unsigned int | addInstanceUpdatedCallback (Legion::SimulationDatabase *database, DtInstanceUpdatedCallback callback, Legion::InstanceHandle instanceHandle, const typename std::vector< Legion::AttributeIndex > &attributeIndexFilter=std::vector< Legion::AttributeIndex >()) |
| template<typename T_Class > | |
| void | removeInstanceUpdatedCallback (Legion::SimulationDatabase *database, Legion::InstanceHandle instanceHandle, unsigned int callbackHandle) |
| bool | isValid () const |
| const StateData & | stateData () const |
| const DtStateData * | stateData (makVrf::SimStateID id) const |
| DtStateData * | stateData (makVrf::SimStateID id) |
| double | absRealTime () const |
| virtual void | prepareForHandoff (unsigned long long, bool becomingLocal) |
| virtual void | handoffComplete (makVrf::SimStateID) |
| virtual bool | awaitingHandoff (makVrf::SimStateID) const |
| virtual DtStateData * | createStateData (makVrf::SimStateID, Legion::SimulationDatabase *) |
| virtual DtStateData * | createStateData (makVrf::SimStateID, UInt64 legionGlobalId) |
| virtual void | clear (bool forReuse=false) |
| Legion::ControlManager * | controlManager () |
| virtual DtUUID | uuidFor (makVrf::SimStateID) const |
| virtual const DtStateData * | stateDataFor (const DtUUID &) const |
| virtual DtStateData * | stateDataFor (const DtUUID &) |
| virtual const DtStateData * | stateDataFor (const DtEntityIdentifier &) const |
| virtual DtStateData * | stateDataFor (const DtEntityIdentifier &) |
| virtual void | setUpdateOnlySpecifiedStateDataMode (bool) |
| bool | updateOnlySpecifiedStateDataMode () const |
| FrameStatus | frameStatus () const |
| virtual const DtStateData * | stateDataFor (makVrf::SimStateID) const |
| virtual DtStateData * | stateDataFor (makVrf::SimStateID) |
| virtual const DtStateData * | stateDataForUniqueId (UInt64) const |
| virtual DtStateData * | stateDataForUniqueId (UInt64) |
| virtual UInt64 | uniqueIdFrom (const DtUUID &) const |
| virtual void | setRunFullyThreaded (bool, int theadCount=4) |
| bool | runFullyThreaded () const |
| virtual void | addStateComponent (DtStateComponent *) |
| virtual void | removeStateComponent (DtStateComponent *, bool deleteOnRemoval=true) |
| virtual void | resizeContainer (unsigned) |
| template<typename T_Component > | |
| void | resizeContainer () |
| template<typename T_Component > | |
| StateComponentSignal & | signalWhenStateComponentAdded () |
| StateComponentSignal & | signalWhenStateComponentAdded (unsigned type) |
| template<typename T_Component > | |
| StateComponentSignal & | signalWhenStateComponentRemoved () |
| StateComponentSignal & | signalWhenStateComponentRemoved (unsigned type) |
| template<typename T_Component > | |
| const CurrentFrameStates & | stateComponents () const |
| virtual void | removeAll () |
| virtual std::set< const DtStateData * > | entitiesTracking (const DtUUID &) const |
| virtual std::set< const DtStateData * > | entitiesJamming (const DtUUID &) const |
| virtual DtTrackJamBeamInfoList | systemsTrackingObject (const DtUUID &) const |
| virtual DtTrackJamBeamInfoList | systemsJammingObject (const DtUUID &) const |
| virtual void | setUnpublishedDatabaseUsage (bool) |
| virtual void | setCoordinateSystem (const Coordinate_System *) |
| const Coordinate_System * | coordinateSystem () const |
| const StateDataByUniqueId & | entityData () const |
| const StateDataByUniqueId & | unitData () const |
| const StateDataByUniqueId & | aerodromeData () const |
| const StateDataByUniqueId & | environmentalData () const |
| virtual void | setPublishingOnLegionNetwork (bool b) |
| bool | publishingOnLegionNetwork () const |
| template<typename T_Class > | |
| Legion::SetView< T_Class > * | view (Legion::SimulationDatabase *db) |
| bool | advancingFrame () const |
Static Public Member Functions | |
| static StateDataCreatorFcn | setStateDataCreatorFcn (StateDataCreatorFcn) |
| static StateDataCreatorFcn | stateDataCreatorFcn () |
| static RemoteStateDataCreatorFcn | setRemoteStateDataCreatorFcn (RemoteStateDataCreatorFcn) |
| static RemoteStateDataCreatorFcn | remoteStateDataCreatorFcn () |
| static DtStateData * | defaultStateDataCreator (makVrf::SimStateID, Legion::SimulationDatabase *, DtStateDataManager *) |
| static DtStateData * | defaultRemoteStateDataCreator (makVrf::SimStateID, UInt64 legionGlobalId, Legion::SimulationDatabase *, DtStateDataManager *) |
| static void | SeedUnpublishedEntityId (short appId, short siteId) |
| static DtEntityIdentifier | NextUnpublishedEntityId () |
| static void | setStateDataManagerCreatorFcn (DtStateDataManagerCreatorFcn fcn) |
| static DtStateDataManager * | createStateDataManager (Legion::SimulationDatabase *=nullptr, int threadPoolSize=-1, unsigned int clientId=0) |
Public Attributes | |
| boost::signals2::signal< void(const Coordinate_System *)> | signal_coordinateSystemChanged |
| boost::signals2::signal< void(const DtStateData *)> | signal_stateDataAboutToBeRemoved |
| boost::signals2::signal< void(makVrf::SimStateID, UInt64)> | signal_stateDataRemoved |
| boost::signals2::signal< void(Legion::SimulationDatabase *)> | signal_addVrfSpecificDataElements |
| boost::signals2::signal< void(const DtStateData *)> | signal_initializeStateDataBeforeAdd |
| boost::signals2::signal< void(DtStateData *)> | signal_stateDataAdded |
| boost::signals2::signal< void()> | signal_beginFrame |
| boost::signals2::signal< void()> | signal_preAdvanceFrame |
| boost::signals2::signal< void()> | signal_advanceFrame |
| boost::signals2::signal< void(DtStateData *, bool)> | signal_prepareForHandoff |
| boost::signals2::signal< void(DtStateData *)> | signal_entityAdded |
| boost::signals2::signal< void(const DtStateData *)> | signal_entityRemoved |
| boost::signals2::signal< void(DtStateData *)> | signal_unitAdded |
| boost::signals2::signal< void(const DtStateData *)> | signal_unitRemoved |
| boost::signals2::signal< void(DtStateData *)> | signal_environmentalAdded |
| boost::signals2::signal< void(const DtStateData *)> | signal_environmentalRemoved |
| boost::signals2::signal< void(DtStateData *)> | signal_aerodromeAdded |
| boost::signals2::signal< void(const DtStateData *)> | signal_aerodromeRemoved |
| boost::signals2::signal< void(unsigned long long, const DtUUID &oldUUID, const DtUUID &newUUID)> | signal_uuidChanged |
| StateComponentSignal | signal_stateComponentAdded |
| StateComponentSignal | signal_stateComponentRemoved |
| boost::signals2::signal< void()> | signal_deleted |
| boost::signals2::signal< void(DtStateData *)> | signal_convertedToLocal |
Protected Types | |
| typedef std::vector < StateComponent > | CurrentFrameStatesList |
| typedef std::unordered_map < DtUUID, std::set < DtStateData * > > | StateDataByUUID |
| typedef std::unordered_map < std::string, std::set < DtStateData * > > | StateDataByEntityIdentifier |
| typedef std::map< DtString, Legion::View * > | Views |
| typedef std::map < Legion::SimulationDatabase *, Views > | DatabaseViews |
| typedef std::vector< std::pair < DtInstanceUpdatedCallback, unsigned int > > | Callbacks |
| typedef std::map < Legion::InstanceHandle, Callbacks > | InstanceUpdatedCallbacks |
| typedef std::map < Legion::AttributeSetId, InstanceUpdatedCallbacks > | InstancesUpdatedCallbacks |
| typedef std::pair< std::set < DtUUID >, std::set< DtUUID > > | SubordinateChangeSet |
| using | Condition = std::condition_variable |
| using | ConditionMutex = std::mutex |
| using | ConditionLock = std::unique_lock< ConditionMutex > |
Protected Member Functions | |
| virtual void | jobsThread () |
| virtual std::set< const DtStateData * > | entitiesTracking (int beamType, const DtUUID &) const |
| virtual DtTrackJamBeamInfoList | systemsTrackingObject (int beamType, const DtUUID &) const |
| virtual void | uuidChanged (makVrf::SimStateID, const DtUUID &oldUUID, const DtUUID &newUUID) |
| virtual void | hostChanged (const DtStateData *, const DtUUID &oldUUID, const DtUUID &newUUID) |
| virtual void | subordinatesChanged (const DtStateData *, const std::vector< DtUUID > &oldSubordinates, const std::vector< DtUUID > &newSubordinates) |
| virtual void | completeAttachments (DtStateData *) |
| virtual void | completeAttachments (const DtUUID &) |
| virtual void | completeAttachments () |
| virtual void | slot_stateComponentAboutToBeDeleted (DtStateComponent *) |
| virtual void | convertedToLocal (DtStateData *) |
| virtual void | resolveHostChanged (const DtUUID &, const DtUUID &oldUUID, const DtUUID &newUUID, std::set< DtEntityStateComponent * > &) |
| virtual bool | _internalRemoveStateData (DtStateData *sd) |
| virtual void | addVrfSpecificDataElements (Legion::SimulationDatabase *) |
| virtual void | resolveHostChanges () |
| virtual void | removeAllStateComponents () |
| virtual void | resolveSubordinateChanges () |
| virtual void | removeStateDataToBeDeleted () |
| void | initializeDefaultPublicData () |
| virtual void | componentDeleted (DtStateComponent *c) |
Static Protected Attributes | |
| static DtStateDataManagerCreatorFcn | theStateDataManagerCreatorFcn |
| typedef std::set<const DtFrameStateInterface*> makVrf::DtStateDataManager::CurrentFrameStates |
| using makVrf::DtStateDataManager::PreAddCallback = boost::function<bool (DtStateData*)> |
| typedef boost::signals2::signal<void (DtStateComponent*)> makVrf::DtStateDataManager::StateComponentSignal |
| typedef std::vector<DtStateData*> makVrf::DtStateDataManager::StateData |
| using makVrf::DtStateDataManager::StateDataCreatorFcn = DtStateData*(*)(makVrf::SimStateID, Legion::SimulationDatabase*, DtStateDataManager*) |
All state data created must have a UUID, so, if one is not provided, it will be supplied.
| using makVrf::DtStateDataManager::RemoteStateDataCreatorFcn = DtStateData*(*)(makVrf::SimStateID, UInt64 legionId, Legion::SimulationDatabase*, DtStateDataManager*) |
If remote state data do not have UUIDs, one will be assigned based on marking text.
| typedef std::unordered_map<UInt64, DtStateData*> makVrf::DtStateDataManager::StateDataByUniqueId |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
First is added, second removed.
|
protected |
|
protected |
|
protected |
|
strong |
| makVrf::DtStateDataManager::DtStateDataManager | ( | Legion::SimulationDatabase * | = nullptr, |
| int | threadPoolSize = -1, |
||
| unsigned int | clientId = 0 |
||
| ) |
If a simulation database is supplied that one will be used, else will create one.
|
virtual |
|
virtual |
If the preAddCallback returns false will not add the state data. When creating local state data, if a parameter database is specified it will look up the entry of the type being created in the parameter database and create any additional public data state components that is part of that parameter entry.
If addToSimObjectManager is false, the, the state data will not be part of the sim object manager as a shared reference. You will need to create and hold onto a shared reference for this state data, or, use the state data as a raw pointer
|
virtual |
|
inline |
|
inline |
|
virtual |
Creates a state data from a remote legion buffer.
|
virtual |
Removes and deletes all state data (local and remote) from this manager.
|
virtual |
|
virtual |
|
virtual |
|
virtual |
Adds an additional mapping to this state data. If an additional mapping by unique id is added, when the state data is removed the adder of this mapping must also remove it.
|
virtual |
|
virtual |
|
virtual |
For an advance frame for the given legion id, if the state data for it exists, and, return it.
|
virtual |
| Legion::EventManager* makVrf::DtStateDataManager::eventManager | ( | ) |
|
inline |
|
inline |
|
static |
Routines to use when creating a non published object that still wants an entity id. Use NextUnpublishedEntityId() to generate or Seed to start at a particular site/app id.
|
static |
Routines to use when creating a non published object that still wants an entity id. Use NextUnpublishedEntityId() to generate or Seed to start at a particular site/app id.
|
virtual |
Force rediscovery of particular object
|
virtual |
|
virtual |
|
virtual |
|
virtual |
If false (default is true) will block until all advance frame jobs are complete. If this is set to false (which this should only be done for a completely remote process like the VRF GUI) then the jobs will be queued by will not wait for completion. If there are jobs left over for the next being frame, remote interfaces will not be processed. If ther were jobs and interfaces were not processed, the next advance frame is skipped until the interfaces are processed.
|
inline |
|
virtual |
Returns true if there are jobs waiting in the processing queue.
|
virtual |
Calls down to the state data manager to reserve a number of entities. This reservation will be cumulative, so, if a previous reserve reserved 1000 entitie, and this reserves 1000, the total will be 2000. This is not thread safe.
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
virtual |
Authority of this object is about to be handed off. The flag is whether it will be becoming local or remote.
|
virtual |
Handoff code.
|
virtual |
|
static |
Returns current state data creator.
|
static |
|
static |
|
static |
|
static |
|
static |
|
virtual |
|
virtual |
|
virtual |
Clears all lists and deletes all state data objects. use wisely. For reuse will mean that this manager is going to be reused with new objects rather than about to be deleted and disposed of.
| Legion::ControlManager* makVrf::DtStateDataManager::controlManager | ( | ) |
|
virtual |
|
virtual |
|
virtual |
|
virtual |
|
virtual |
|
virtual |
Puts the DtStateDataManager into a mode where only specified state data are updated in the advance frame. Default is false.
|
inline |
|
inline |
|
virtual |
|
virtual |
|
virtual |
|
virtual |
Whether or not to run fully threaded (default is true)
|
inline |
|
virtual |
|
virtual |
|
virtual |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
virtual |
Iterates over all the data and removes it all from the system, calling remove and signalling on each one, which could be a long process, depending on the amount of objects in the system.
|
virtual |
Given the global object designator, find all the entities that are tracking the given object by their emitter systems.
|
virtual |
Given the global object designator, find all the entities that are tracking the given object by their emitter systems.
|
virtual |
Given the global id, return a list of the systems and beams tracking this object.
|
virtual |
Given the global id, return a list of the systems and DtUUID tracking this object.
|
static |
Factory method for creating this class. If no factory method defined the default DtNetworkInterfaceManager is created.
|
static |
Factory method for creating this class. If no factory method defined the default DtNetworkInterfaceManager is created.
|
virtual |
Call this to create a database that will store "unpublished" objects. This is only useful when using a legion based connection.
|
virtual |
If defined, the coordinate system to convert geocentric coordinates to local database coordinates.
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
virtual |
|
inline |
|
inline |
Returns the entity view for the given database.
|
inline |
|
protectedvirtual |
|
protectedvirtual |
|
protectedvirtual |
|
protectedvirtual |
|
protectedvirtual |
|
protectedvirtual |
|
protectedvirtual |
|
protectedvirtual |
|
protectedvirtual |
|
protectedvirtual |
|
protectedvirtual |
|
protectedvirtual |
|
protectedvirtual |
Remove state data from internal lists but don't delete until last reference is removed. Do not call directly.
|
protectedvirtual |
|
protectedvirtual |
|
protectedvirtual |
|
protectedvirtual |
|
protectedvirtual |
|
protected |
Non-virtual because called from constructor.
|
protectedvirtual |
| boost::signals2::signal<void (const Coordinate_System*)> makVrf::DtStateDataManager::signal_coordinateSystemChanged |
|
mutable |
Signals sent for state data actions.
|
mutable |
| boost::signals2::signal<void (Legion::SimulationDatabase*)> makVrf::DtStateDataManager::signal_addVrfSpecificDataElements |
Signal sent when it is ok to add columns to the entity set.
| boost::signals2::signal<void (const DtStateData*)> makVrf::DtStateDataManager::signal_initializeStateDataBeforeAdd |
This signal is called before the data is fully added. Gives connectors a chace to add data into the next frame state before addition.
|
mutable |
| boost::signals2::signal<void ()> makVrf::DtStateDataManager::signal_beginFrame |
| boost::signals2::signal<void ()> makVrf::DtStateDataManager::signal_preAdvanceFrame |
| boost::signals2::signal<void ()> makVrf::DtStateDataManager::signal_advanceFrame |
| boost::signals2::signal<void (DtStateData*, bool)> makVrf::DtStateDataManager::signal_prepareForHandoff |
| boost::signals2::signal<void (DtStateData*)> makVrf::DtStateDataManager::signal_entityAdded |
Convenience signals for when a data is added – something is considered a unit if it has a aggregateStateComponent, an environmental if it has a environmentalStateComponent, else it is considered an entity.
| boost::signals2::signal<void (const DtStateData*)> makVrf::DtStateDataManager::signal_entityRemoved |
| boost::signals2::signal<void (DtStateData*)> makVrf::DtStateDataManager::signal_unitAdded |
| boost::signals2::signal<void (const DtStateData*)> makVrf::DtStateDataManager::signal_unitRemoved |
| boost::signals2::signal<void (DtStateData*)> makVrf::DtStateDataManager::signal_environmentalAdded |
| boost::signals2::signal<void (const DtStateData*)> makVrf::DtStateDataManager::signal_environmentalRemoved |
| boost::signals2::signal<void (DtStateData*)> makVrf::DtStateDataManager::signal_aerodromeAdded |
| boost::signals2::signal<void (const DtStateData*)> makVrf::DtStateDataManager::signal_aerodromeRemoved |
| boost::signals2::signal<void (unsigned long long, const DtUUID& oldUUID, const DtUUID& newUUID)> makVrf::DtStateDataManager::signal_uuidChanged |
| StateComponentSignal makVrf::DtStateDataManager::signal_stateComponentAdded |
| StateComponentSignal makVrf::DtStateDataManager::signal_stateComponentRemoved |
| boost::signals2::signal<void ()> makVrf::DtStateDataManager::signal_deleted |
| boost::signals2::signal<void (DtStateData*)> makVrf::DtStateDataManager::signal_convertedToLocal |
|
protected |
|
mutableprotected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
mutableprotected |
|
protected |
|
protected |
|
protected |
|
staticprotected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
mutableprotected |
|
mutableprotected |
|
protected |
|
protected |