1 /*
2  * Copyright (c) 2023 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #ifndef ECMASCRIPT_TOOLING_CLIENT_DOMAIN_RUNTIME_CLIENT_H
17 #define ECMASCRIPT_TOOLING_CLIENT_DOMAIN_RUNTIME_CLIENT_H
18 
19 #include <iostream>
20 #include <map>
21 
22 #include "tooling/base/pt_types.h"
23 
24 using PtJson = panda::ecmascript::tooling::PtJson;
25 using Result = panda::ecmascript::tooling::Result;
26 namespace OHOS::ArkCompiler::Toolchain {
27 class RuntimeClient final {
28 public:
RuntimeClient(int32_t sessionId)29     RuntimeClient(int32_t sessionId) : sessionId_(sessionId) {}
30     ~RuntimeClient() = default;
31 
32     bool DispatcherCmd(const std::string &cmd);
33     int HeapusageCommand();
34     int RuntimeEnableCommand();
35     int RuntimeDisableCommand();
36     int RunIfWaitingForDebuggerCommand();
37     int GetPropertiesCommand();
38     int GetPropertiesCommand2();
39     std::string GetMethodById(const int &id);
40     std::string GetRequestObjectIdById(const int &id);
41     void RecvReply(std::unique_ptr<PtJson> json);
42     void HandleHeapUsage(std::unique_ptr<PtJson> json);
43     void HandleGetProperties(std::unique_ptr<PtJson> json, const int &id);
44 
SetObjectId(const std::string &objectId)45     void SetObjectId(const std::string &objectId)
46     {
47         objectId_ = objectId;
48     }
49 
SetIsInitializeTree(const bool &isInitializeTree)50     void SetIsInitializeTree(const bool &isInitializeTree)
51     {
52         isInitializeTree_ = isInitializeTree;
53     }
54 
GetIsInitializeTree() const55     bool GetIsInitializeTree() const
56     {
57         return isInitializeTree_;
58     }
59 
60 private:
61     std::map<int, std::tuple<std::string, std::string>> idMethodMap_ {};
62     std::string objectId_ {"0"};
63     bool isInitializeTree_ {true};
64     int32_t sessionId_;
65 };
66 } // OHOS::ArkCompiler::Toolchain
67 #endif