WSF
WsfAssetManager.hpp
Go to the documentation of this file.
1// ****************************************************************************
2// CUI//REL TO USA ONLY
3//
4// The Advanced Framework for Simulation, Integration, and Modeling (AFSIM)
5//
6// The use, dissemination or disclosure of data in this file is subject to
7// limitation or restriction. See accompanying README and LICENSE for details.
8// ****************************************************************************
9/*******************************************************************************
10*
11* File: WsfAssetManager.hpp
12*
13* Classification: UNCLASSIFIED
14*
15* Details:
16*
17* Contract Number:
18* Contractor Name: Radiance Technologies
19* Address: 350 Wynn Drive
20* Huntsville, AL 35805
21*
22* Abstract: This is an afsim base class for all battle manager
23* implementation classes to inherit from. It provides necessary common functionality.
24* It's not pure abstract in the sense that we actually instantiate an object of this
25* type purely for type registration purposes with the sole intent of giving AFSIM
26* scripts the ability to up/down cast to and from the inherited types.
27*
28*******************************************************************************/
29
30#ifndef WSF_ASSET_MANAGER_HPP
31#define WSF_ASSET_MANAGER_HPP
32
33namespace il
34{
35 class BattleManagerInterface;
36 class AssetManagerInterface;
37 class DisseminateC2Interface;
38 class WsfPlatform;
39}
40
41#include <map>
42#include <memory>
43#include <utility>
44
47#include <UtCallbackHolder.hpp>
48
51
53#include "WsfBMAssetRecord.hpp"
54#include "WsfAssetMap.hpp"
55#include <WsfTrack.hpp>
58#include <WsfBMMOELogger.hpp>
59#include <WsfApplication.hpp>
61
63{
64 public:
66 const std::string& aPartClass = WsfScriptAssetManagerClass::SCRIPT_CLASS_NAME,
67 const std::string& aPartVarName = "PROCESSOR");
69 const std::string& aPartClass,
70 const std::string& aPartVarName,
71 const std::shared_ptr<il::AssetManagerInterface>& am_component);
72 virtual ~WsfAssetManager();
73
74 WsfProcessor* Clone() const override;
75
76 // Plugin Interface
77 static WSF_IADS_C2_LIB_EXPORT void RegisterScriptTypes(WsfApplication* aApplicationPtr);
78 static WSF_IADS_C2_LIB_EXPORT WsfProcessor* Create(WsfScenario& aScenario);
79 static WSF_IADS_C2_LIB_EXPORT std::unique_ptr<WsfAssetManager> CreateUnique(WsfScenario& aScenario);
80 // End Plugin Interface
81
82 bool ProcessInput(UtInput& aInput) override;
83
84 const char* GetScriptClassName() const override;
85 virtual const char* GetBaseClassName();
86
87 // Ownership goes to caller - responsible for destroying
88 virtual WsfAssetMap* GetAssetMapPtr();
90
91 bool Initialize(double aSimTime) override;
92 bool Initialize2(double aSimTime) override;
93 virtual bool ConnectTrackDropCallback(const std::string& drop_handler_func);
94 virtual bool ConnectTrackInitiatedCallback(const std::string& handler_func);
95 virtual bool ConnectTrackUpdatedCallback(const std::string& handler_func);
96 void Update(double aSimTime) override;
97 void Run(const double aSimTime) override; // HELIOS C2 component interface for invoking processor periodic updates
98
99 bool ProcessMessage(double aSimTime, const WsfMessage& aMessage) override;
100 bool ReceiveMessage(double aSimTime, const WsfMessage& aMessage) override;
101
102 virtual std::tuple<bool, double> ShouldDelayIncomingMessage(double aSimTime, const WsfMessage& aMessage);
103
104 // Platform/Processor Callbacks
105 virtual void LocalTrackDropped(double aSimTime, const WsfLocalTrack* aLocalTrackPtr);
106 virtual void LocalTrackInitiated(double aSimTime, const WsfLocalTrack* aLocalTrackPtr, const WsfTrack* aRawTrackPtr);
107 virtual void LocalTrackUpdated(double aSimTime, const WsfLocalTrack* aLocalTrackPtr, const WsfTrack* aRawTrackPtr);
108
109 // Perception Handling
110 virtual double TimeLastReceivedTrackUpdate(const WsfLocalTrack* track) const;
111
112 // Accessors
113 int GetMaxAssignments() const;
114 int GetCurrentNumAssignments() const;
115 double GetAssignmentDelaySecs() const;
116
117 protected:
118
122 UtCallbackHolder m_callbacks;
123
125
126 // Note: Copying the asset manager doesn't make sense because it needs to be initialized
127 // and that initialization is tied to a specific platform, processor, etc. However,
128 // the copy constructor is required because Clone() needs it in order to properly clone the
129 // object (albeit with no initialization tied to it). so we'll basically use it to get a
130 // copy of a cloned object that is yet to be initialized in order for the prototypical
131 // inheritance to work.
132 WsfAssetManager(const WsfAssetManager& aSrc);
133
134 virtual bool ProcessAssetManagementInput(UtInput& aInput);
135
136 // behavior overrides
141
142 private:
143
144 WsfAssetManager& operator=(const WsfAssetManager& rhs) = delete;;
145};
146
147#endif
Definition WsfApplication.hpp:45
virtual bool ConnectTrackInitiatedCallback(const std::string &handler_func)
Definition WsfAssetManager.cpp:335
int GetCurrentNumAssignments() const
Definition WsfAssetManager.cpp:481
virtual std::tuple< bool, double > ShouldDelayIncomingMessage(double aSimTime, const WsfMessage &aMessage)
Definition WsfAssetManager.cpp:414
static WSF_IADS_C2_LIB_EXPORT void RegisterScriptTypes(WsfApplication *aApplicationPtr)
Definition WsfAssetManager.cpp:92
bool m_override_internal_on_message
Definition WsfAssetManager.hpp:140
WsfBMTrackScriptRemoteHandler m_initiated_monitor
Definition WsfAssetManager.hpp:120
virtual ~WsfAssetManager()
Definition WsfAssetManager.cpp:81
int GetMaxAssignments() const
Definition WsfAssetManager.cpp:476
bool m_override_internal_on_update
Definition WsfAssetManager.hpp:139
virtual const char * GetBaseClassName()
Definition WsfAssetManager.cpp:121
bool Initialize2(double aSimTime) override
Definition WsfAssetManager.cpp:292
virtual void LocalTrackInitiated(double aSimTime, const WsfLocalTrack *aLocalTrackPtr, const WsfTrack *aRawTrackPtr)
Definition WsfAssetManager.cpp:435
UtCallbackHolder m_callbacks
Definition WsfAssetManager.hpp:122
WsfBMTrackScriptLocalHandler m_drop_monitor
Definition WsfAssetManager.hpp:119
bool ReceiveMessage(double aSimTime, const WsfMessage &aMessage) override
Definition WsfAssetManager.cpp:400
virtual bool ConnectTrackDropCallback(const std::string &drop_handler_func)
Definition WsfAssetManager.cpp:322
bool ProcessInput(UtInput &aInput) override
Definition WsfAssetManager.cpp:126
bool Initialize(double aSimTime) override
Definition WsfAssetManager.cpp:277
WsfDefaultAssetManagerImpl m_default_am_impl
Definition WsfAssetManager.hpp:124
bool ProcessMessage(double aSimTime, const WsfMessage &aMessage) override
Definition WsfAssetManager.cpp:381
static WSF_IADS_C2_LIB_EXPORT WsfProcessor * Create(WsfScenario &aScenario)
Definition WsfAssetManager.cpp:104
virtual bool ProcessAssetManagementInput(UtInput &aInput)
Definition WsfAssetManager.cpp:142
virtual void LocalTrackUpdated(double aSimTime, const WsfLocalTrack *aLocalTrackPtr, const WsfTrack *aRawTrackPtr)
Definition WsfAssetManager.cpp:448
void Update(double aSimTime) override
Definition WsfAssetManager.cpp:361
WsfProcessor * Clone() const override
Definition WsfAssetManager.cpp:86
virtual double TimeLastReceivedTrackUpdate(const WsfLocalTrack *track) const
Definition WsfAssetManager.cpp:461
virtual bool ConnectTrackUpdatedCallback(const std::string &handler_func)
Definition WsfAssetManager.cpp:348
double GetAssignmentDelaySecs() const
Definition WsfAssetManager.cpp:486
WsfBMTrackScriptRemoteHandler m_updated_monitor
Definition WsfAssetManager.hpp:121
virtual WsfAssetMap * GetAssetMapPtr()
Definition WsfAssetManager.cpp:267
const char * GetScriptClassName() const override
Definition WsfAssetManager.cpp:116
bool m_override_internal_initialization2
Definition WsfAssetManager.hpp:138
static WSF_IADS_C2_LIB_EXPORT std::unique_ptr< WsfAssetManager > CreateUnique(WsfScenario &aScenario)
Definition WsfAssetManager.cpp:111
bool m_override_internal_initialization
Definition WsfAssetManager.hpp:137
void Run(const double aSimTime) override
Definition WsfAssetManager.cpp:374
WsfAssetManager(WsfScenario &aScenario, const std::string &aPartClass=WsfScriptAssetManagerClass::SCRIPT_CLASS_NAME, const std::string &aPartVarName="PROCESSOR")
Definition WsfAssetManager.cpp:45
virtual WsfBMAssetRecord * GetAssetPtr()
Definition WsfAssetManager.cpp:272
virtual void LocalTrackDropped(double aSimTime, const WsfLocalTrack *aLocalTrackPtr)
Definition WsfAssetManager.cpp:422
Definition WsfAssetMap.hpp:23
Definition WsfBMAssetRecord.hpp:32
Definition WsfBMTrackScriptCallbackHandler.hpp:61
Definition WsfBMTrackScriptCallbackHandler.hpp:72
WsfC2ComponentContainer(const std::shared_ptr< il::BattleManagerInterface > &component, const std::shared_ptr< il::moeLoggingInterface > &logger=nullptr)
Definition WsfC2ComponentRefInterface.cpp:31
Definition WsfDefaultAssetManagerImpl.hpp:65
Definition WsfLocalTrack.hpp:32
A base class for messages sent among simulation communication objects, processors and sensors.
Definition WsfMessage.hpp:33
Platforms represent a entity within the simulation.
Definition WsfPlatform.hpp:115
WsfProcessor(const WsfScenario &aScenario)
Definition WsfProcessor.cpp:25
Contains the data required to create a simulation, and acts as the entry point for input file process...
Definition WsfScenario.hpp:111
static const char * SCRIPT_CLASS_NAME
Definition WsfScriptAssetManagerClass.hpp:46
WsfScriptOverridableProcessor(const bool autonomous_updates)
Definition WsfScriptOverridableProcessor.hpp:36
WsfScriptProcessor(const WsfScenario &aScenario)
Definition WsfScriptProcessor.cpp:30
An object that represents an 'track' (perception) of something.
Definition WsfTrack.hpp:120
Definition WsfAssetManager.hpp:34
Copyrights Multiple, All Rights Reserved