• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1  /*
2   * Copyright (c) 2021 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  #include "plugin_command_builder.h"
17  #include "common_types.pb.h"
18  #include "logging.h"
19  #include "plugin_service_types.pb.h"
20  
PluginCommandBuilder()21  PluginCommandBuilder::PluginCommandBuilder()
22  {
23      cmdIdAutoIncrease_ = 1;
24  }
25  
~PluginCommandBuilder()26  PluginCommandBuilder::~PluginCommandBuilder() {}
27  
BuildCreateSessionCmd(const ProfilerPluginConfig & config,uint32_t bufferSize)28  GetCommandResponsePtr PluginCommandBuilder::BuildCreateSessionCmd(const ProfilerPluginConfig& config,
29                                                                    uint32_t bufferSize)
30  {
31      auto cmd = std::make_shared<GetCommandResponse>();
32      cmd->set_status(ResponseStatus::OK);
33      cmd->set_has_more(false);
34      cmd->set_command_id(cmdIdAutoIncrease_);
35      CreateSessionCmd* csc = cmd->mutable_create_session_cmd();
36      csc->add_buffer_sizes(bufferSize);
37      ProfilerPluginConfig* ppc = csc->add_plugin_configs();
38      *ppc = config;
39      commandHistory_[cmdIdAutoIncrease_] = cmd;
40      cmdIdAutoIncrease_++;
41      return cmd;
42  }
43  
BuildDestroySessionCmd(uint32_t pluginId)44  GetCommandResponsePtr PluginCommandBuilder::BuildDestroySessionCmd(uint32_t pluginId)
45  {
46      auto cmd = std::make_shared<GetCommandResponse>();
47      cmd->set_status(ResponseStatus::OK);
48      cmd->set_has_more(false);
49      cmd->set_command_id(cmdIdAutoIncrease_);
50  
51      DestroySessionCmd* dsc = cmd->mutable_destroy_session_cmd();
52      dsc->add_plugin_ids(pluginId);
53  
54      commandHistory_[cmdIdAutoIncrease_] = cmd;
55      cmdIdAutoIncrease_++;
56      return cmd;
57  }
58  
BuildStartSessionCmd(const ProfilerPluginConfig & config,uint32_t pluginId)59  GetCommandResponsePtr PluginCommandBuilder::BuildStartSessionCmd(const ProfilerPluginConfig& config, uint32_t pluginId)
60  {
61      auto cmd = std::make_shared<GetCommandResponse>();
62      cmd->set_status(ResponseStatus::OK);
63      cmd->set_has_more(false);
64      cmd->set_command_id(cmdIdAutoIncrease_);
65  
66      StartSessionCmd* ssc = cmd->mutable_start_session_cmd();
67      ssc->add_plugin_ids(pluginId);
68      ProfilerPluginConfig* ppc = ssc->add_plugin_configs();
69      *ppc = config;
70  
71      commandHistory_[cmdIdAutoIncrease_] = cmd;
72      cmdIdAutoIncrease_++;
73      return cmd;
74  }
75  
BuildStopSessionCmd(uint32_t pluginId)76  GetCommandResponsePtr PluginCommandBuilder::BuildStopSessionCmd(uint32_t pluginId)
77  {
78      auto cmd = std::make_shared<GetCommandResponse>();
79      cmd->set_status(ResponseStatus::OK);
80      cmd->set_has_more(false);
81      cmd->set_command_id(cmdIdAutoIncrease_);
82  
83      StopSessionCmd* ssc = cmd->mutable_stop_session_cmd();
84      ssc->add_plugin_ids(pluginId);
85  
86      commandHistory_[cmdIdAutoIncrease_] = cmd;
87      cmdIdAutoIncrease_++;
88      return cmd;
89  }
90  
BuildRefreshSessionCmd(uint32_t pluginId)91  GetCommandResponsePtr PluginCommandBuilder::BuildRefreshSessionCmd(uint32_t pluginId)
92  {
93      auto cmd = std::make_shared<GetCommandResponse>();
94      cmd->set_status(ResponseStatus::OK);
95      cmd->set_has_more(false);
96      cmd->set_command_id(cmdIdAutoIncrease_);
97  
98      RefreshSessionCmd* rsc = cmd->mutable_refresh_session_cmd();
99      rsc->add_plugin_ids(pluginId);
100  
101      commandHistory_[cmdIdAutoIncrease_] = cmd;
102      cmdIdAutoIncrease_++;
103      return cmd;
104  }
105  
GetedCommandResponse(uint32_t cmdId)106  bool PluginCommandBuilder::GetedCommandResponse(uint32_t cmdId)
107  {
108      if (commandHistory_.find(cmdId) == commandHistory_.end()) {
109          return false;
110      }
111      commandHistory_.erase(cmdId);
112      return true;
113  }