WSF
WsfEventPipe.hpp
Go to the documentation of this file.
1// ****************************************************************************
2// CUI
3//
4// The Advanced Framework for Simulation, Integration, and Modeling (AFSIM)
5//
6// Copyright 2003-2015 The Boeing Company. All rights reserved.
7//
8// The use, dissemination or disclosure of data in this file is subject to
9// limitation or restriction. See accompanying README and LICENSE for details.
10// ****************************************************************************
11
12#ifndef WSFEVENTPIPE_HPP
13#define WSFEVENTPIPE_HPP
14
15#include <bitset>
16#include <iosfwd>
17#include <map>
18#include <memory>
19#include <unordered_map>
20
22#include "UtCallbackHolder.hpp"
23#include "UtTextDocument.hpp"
25#include "WsfEventPipeClasses.hpp"
27#include "WsfEventPipeInput.hpp"
33
36{
37public:
38 static WsfEventPipeExtension* Find(const WsfScenario& aScenario);
39
41 ~WsfEventPipeExtension() override = default;
42
43 bool ProcessInput(UtInput& aInput) override;
44 void SimulationCreated(WsfSimulation& aSimulation) override;
45
46 // register a new option to be toggled by the 'enable' / 'disable' commands
47 int RegisterEventOption(const std::string& aOptionName, bool aDefaultValue);
48
50 void AddSchema(const std::string& aSchemaText);
51
54 void AddCallback(std::unique_ptr<UtCallback> aCallbackPtr);
55
56 const UtTextDocument& GetSchema() const { return mSchema; }
57
58 std::vector<std::string>& GetEventNames() { return mEventNames; }
59 const std::vector<std::string>& GetEventNames() const { return mEventNames; }
60
61 int GetEventId(const std::string& aName) const;
62 const wsf::eventpipe::EventIds& GetEventIds() const { return mEventIds; }
63
64 mutable UtCallbackListN<void(UtPackSerializer*)> RegisterExtensionMessages;
65
67 using DetailSettingsMap = std::map<std::string, WsfEventPipeOptions>;
68 const DetailSettingsMap& GetDetailSettings() const { return mData.mDetailSettings; }
69
70private:
72 WsfEventPipeOptions mDefaultPreset;
73 bool mDefaultPresetDefined;
74
75 std::vector<std::string> mEventNames;
77
78 // The UtPack schema from the built-in code as well as any extensions
79 UtTextDocument mSchema;
80
81 // Stores callbacks that are generated when connecting to RegisterExtensionMessages
82 // This allows the callbacks to be cleaned up on destruction
83 UtCallbackHolder mCallbacks;
84};
85
86#endif
#define WSF_EXPORT
Definition WsfXIO_Export.hpp:35
Definition UtPack.hpp:137
std::map< std::string, WsfEventPipeOptions > DetailSettingsMap
This is used ONLY by WsfGrammarInterface::OutputForIDE to get events names and such for the IDE.
Definition WsfEventPipe.hpp:67
WsfEventPipeExtension()
Definition WsfEventPipe.cpp:49
UtCallbackListN< void(UtPackSerializer *)> RegisterExtensionMessages
Definition WsfEventPipe.hpp:64
void AddCallback(std::unique_ptr< UtCallback > aCallbackPtr)
Definition WsfEventPipe.cpp:302
~WsfEventPipeExtension() override=default
static WsfEventPipeExtension * Find(const WsfScenario &aScenario)
Definition WsfEventPipe.cpp:44
const wsf::eventpipe::EventIds & GetEventIds() const
Definition WsfEventPipe.hpp:62
const DetailSettingsMap & GetDetailSettings() const
Definition WsfEventPipe.hpp:68
const UtTextDocument & GetSchema() const
Definition WsfEventPipe.hpp:56
int RegisterEventOption(const std::string &aOptionName, bool aDefaultValue)
Definition WsfEventPipe.cpp:283
void AddSchema(const std::string &aSchemaText)
Additional UtPack structures may be defined by other extensions.
Definition WsfEventPipe.cpp:297
std::vector< std::string > & GetEventNames()
Definition WsfEventPipe.hpp:58
const std::vector< std::string > & GetEventNames() const
Definition WsfEventPipe.hpp:59
Input configuration for the event pipe interface.
Definition WsfEventPipeInput.hpp:21
Definition WsfEventPipeOptions.hpp:23
WsfScenarioExtension()
Definition WsfScenarioExtension.cpp:21
virtual bool ProcessInput(UtInput &aInput)
Definition WsfScenarioExtension.cpp:62
virtual void SimulationCreated(WsfSimulation &aSimulation)
Definition WsfScenarioExtension.cpp:119
friend class WsfScenario
Definition WsfScenarioExtension.hpp:39
The main controller for a simulation.
Definition WsfSimulation.hpp:109
Definition WsfEventPipeEventIds.hpp:21
Copyrights Multiple, All Rights Reserved