WSF
WsfXIO_ScriptService.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 WSFXIO_SCRIPTSERVICE_HPP
13#define WSFXIO_SCRIPTSERVICE_HPP
14
15#include "wsf_export.h"
16
17#include <vector>
18
19#include "UtCallbackHolder.hpp"
20class UtScript;
21#include "UtScriptData.hpp"
22#include "UtScriptDebugger.hpp"
23class UtScriptExecutor;
24struct UtScriptExecutorProgramCounter;
25class WsfPlatform;
26class WsfPlatformPart;
27class WsfSimulation;
32
34class WSF_EXPORT WsfXIO_ScriptService : public WsfXIO_ServiceT<WsfXIO_RequestScriptSessionPkt, WsfXIO_SimService>
35{
36public:
38
40
41 static bool CheckParams(UtScript* aScriptPtr,
42 std::vector<UtScriptData>& aParams,
43 WsfPlatform* aContextPlatformPtr,
44 UtScriptTypes* aScriptTypes,
45 WsfSimulation* aSimulationPtr);
46
47 static bool CheckParams(const std::vector<std::string>& aArgTypes,
48 std::vector<UtScriptData>& aParams,
49 WsfPlatform* aContextPlatformPtr,
50 UtScriptTypes* aScriptTypes,
51 WsfSimulation* aSimulationPtr);
52
53 void SubscriptionCancelledT(WsfXIO_Subscription* aSubscriptionPtr, WsfXIO_RequestScriptSessionPkt& aRequest) override;
54
55protected:
56 using ScriptMap = std::map<UtScriptData, UtScriptData>;
58
59 // Note UtScriptData are passed by value to avoid potential problems with references getting deleted while processing
61 WsfXIO_RequestScriptDataResponsePkt::VariableValue GetEntry(UtScriptData aBaseEntry, std::vector<int>& aEntryIndex);
62
64 UtScriptData* aBaseEntry,
65 std::vector<int>& aAddress);
66
67 struct ExpressionResult;
68
70 {
71 if (!GetSubscriptions().empty())
72 {
73 return GetSubscriptions().begin()->second;
74 }
75 return nullptr;
76 }
77 void OnBreak(UtScriptDebugger::BreakType aBreakType);
78 void OnContinue();
79 void OnUpdate();
80
81 void SendState(UtScriptDebugger::BreakType aBreakType, bool aIsInitialSend = false);
82 void HandleRequest(WsfXIO_RequestScriptSessionPkt& aPkt);
83
84 void HandleInformationRequest(WsfXIO_InformationRequestPkt& aPkt);
85 void HandleScriptDataRequest(WsfXIO_RequestScriptDataPkt& aPkt);
86 void HandleExecute(WsfXIO_ScriptExecutePkt& aPkt);
87 void HandleScriptCommand(WsfXIO_ScriptCommandPkt& aPkt);
88
89 void UpdateWhileAtBreak();
90 void StoreScript(WsfPlatformPart* aPartPtr, UtScript* aScript, WsfXIO_ScriptListPkt& aPkt);
91
92 void StoreAllScripts(WsfPlatformPart* aPartPtr, UtScriptContext* aInstancePtr, WsfXIO_ScriptListPkt& aPkt);
93 void InitializeEnumerateScripts();
94 using ExpressionId = std::pair<int, int>;
96 UtScriptExecutor& aContextExecutor,
97 UtScriptExecutorProgramCounter* pc,
98 std::string aExpression);
99
107
109 UtScriptDebugger* GetDebugger();
110
112 UtCallbackHolder mCallbacks;
113 UtScriptEnvironment* mScriptEnvironmentPtr;
114
115 std::map<ExpressionId, ExpressionResult> mEvaluatedExpressions;
117 std::map<UtScriptClass*, UtScript*> mDebugEnumerateScripts;
118 std::map<std::string, UtScript*> mDebugEnumerateGlobalScripts;
120};
121#endif
ut::script::Data UtScriptData
Definition WsfScriptContext.hpp:47
#define WSF_EXPORT
Definition WsfXIO_Export.hpp:35
Definition WsfPlatformPart.hpp:61
Platforms represent a entity within the simulation.
Definition WsfPlatform.hpp:115
The main controller for a simulation.
Definition WsfSimulation.hpp:109
Requests an application to send back information.
Definition WsfXIO_PacketRegistry.hpp:335
Definition WsfXIO_PacketRegistry.hpp:1454
Definition WsfXIO_PacketRegistry.hpp:1689
Definition WsfXIO_PacketRegistry.hpp:1665
Requests that an application begin sending state information for a specified platform part.
Definition WsfXIO_SimPacketRegistry.hpp:86
Requests that an application send a list of valid scripts for a given platform or a global script lis...
Definition WsfXIO_PacketRegistry.hpp:1195
WsfSimulation & mSimulation
Definition WsfXIO_ScriptService.hpp:111
UtScriptEnvironment * mScriptEnvironmentPtr
Definition WsfXIO_ScriptService.hpp:113
WsfXIO_RequestScriptDataResponsePkt::VariableValue GetEntry(UtScriptData aBaseEntry, std::vector< int > &aEntryIndex)
Definition WsfXIO_ScriptService.cpp:1241
WsfXIO_RequestScriptDataResponsePkt::VariableValue GetEntryFromEnumerationScript(UtScript *aEnumScriptPtr, UtScriptData *aBaseEntry, std::vector< int > &aAddress)
Definition WsfXIO_ScriptService.cpp:1143
int mNextExpressionId
Definition WsfXIO_ScriptService.hpp:108
static bool CheckParams(UtScript *aScriptPtr, std::vector< UtScriptData > &aParams, WsfPlatform *aContextPlatformPtr, UtScriptTypes *aScriptTypes, WsfSimulation *aSimulationPtr)
Definition WsfXIO_ScriptService.cpp:306
UtScript * mDebugEnumerateGobalsScript
Definition WsfXIO_ScriptService.hpp:119
std::map< ExpressionId, ExpressionResult > mEvaluatedExpressions
Definition WsfXIO_ScriptService.hpp:115
bool mInitializedEnumerateScripts
Definition WsfXIO_ScriptService.hpp:116
UtScriptDebugger * GetDebugger()
Definition WsfXIO_ScriptService.cpp:992
std::pair< int, int > ExpressionId
Definition WsfXIO_ScriptService.hpp:94
WsfXIO_ScriptService(WsfXIO_Simulation &aXIO_Simulation)
Definition WsfXIO_ScriptService.cpp:32
std::map< std::string, UtScript * > mDebugEnumerateGlobalScripts
Definition WsfXIO_ScriptService.hpp:118
WsfXIO_RequestScriptDataResponsePkt::VariableValue PackValue(const UtScriptData &aEntry, std::vector< int > aIndex)
Definition WsfXIO_ScriptService.cpp:1343
ExpressionResult * ExpressionEval(ExpressionId aExpressionId, UtScriptExecutor &aContextExecutor, UtScriptExecutorProgramCounter *pc, std::string aExpression)
Definition WsfXIO_ScriptService.cpp:435
WsfXIO_ServiceT< WsfXIO_RequestScriptSessionPkt, WsfXIO_SimService > BaseClassType
Definition WsfXIO_ScriptService.hpp:37
std::map< UtScriptData, UtScriptData > ScriptMap
Definition WsfXIO_ScriptService.hpp:56
WsfXIO_Subscription * GetSubscription()
Definition WsfXIO_ScriptService.hpp:69
std::map< UtScriptClass *, UtScript * > mDebugEnumerateScripts
Definition WsfXIO_ScriptService.hpp:117
UtCallbackHolder mCallbacks
Definition WsfXIO_ScriptService.hpp:112
virtual void SubscriptionCancelledT(WsfXIO_Subscription *aSubscriptionPtr, RequestType &aRequest)
Definition WsfXIO_Service.hpp:99
WsfXIO_ServiceT(WsfXIO_Interface *aInterfacePtr)
Definition WsfXIO_Service.hpp:84
const SubscriptionMap GetSubscriptions() const
Definition WsfXIO_Service.hpp:61
Definition WsfXIO_Simulation.hpp:49
A WsfXIO_Subscription wraps information about a remote request for information.
Definition WsfXIO_Subscription.hpp:30
Definition WsfXIO_PacketRegistry.hpp:1513
Definition WsfXIO_ScriptService.hpp:101
UtScriptData mReturnValue
Definition WsfXIO_ScriptService.hpp:104
ExpressionId mExpressionId
Definition WsfXIO_ScriptService.hpp:102
bool mCompiled
Definition WsfXIO_ScriptService.hpp:103
UtScriptContext * mContextPtr
Definition WsfXIO_ScriptService.hpp:105
Copyrights Multiple, All Rights Reserved