Skip to content

Commit

Permalink
perf: 优化部分获取信息的接口实现
Browse files Browse the repository at this point in the history
  • Loading branch information
MistEO committed Nov 8, 2023
1 parent 3da8057 commit a5c71cc
Show file tree
Hide file tree
Showing 9 changed files with 23 additions and 17 deletions.
2 changes: 1 addition & 1 deletion source/MaaFramework/API/MaaResource.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -116,6 +116,6 @@ MaaBool MAA_FRAMEWORK_API MaaResourceGetTaskList(MaaResourceHandle res, /* out *
return false;
}

buffer->set(std::move(list));
buffer->set(json::array(list).to_string());
return true;
}
4 changes: 2 additions & 2 deletions source/MaaFramework/API/MaaSyncContext.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -170,12 +170,12 @@ MaaBool MaaSyncContextGetTaskResult(MaaSyncContextHandle sync_context, MaaString
return false;
}

auto res = sync_context->task_result(task_name);
json::value res = sync_context->task_result(task_name);
if (res.empty()) {
LogError << "res is empty";
return false;
}

buffer->set(std::move(res));
buffer->set(res.to_string());
return true;
}
11 changes: 7 additions & 4 deletions source/MaaFramework/API/MaaTypes.h
Original file line number Diff line number Diff line change
@@ -1,13 +1,16 @@
#pragma once

#include "MaaFramework/MaaDef.h"
#include "Utils/NoWarningCVMat.hpp"

#include <filesystem>
#include <string>
#include <string_view>
#include <vector>

#include <meojson/json.hpp>

#include "MaaFramework/MaaDef.h"
#include "Utils/NoWarningCVMat.hpp"

struct MaaInstanceSink
{
public:
Expand All @@ -28,7 +31,7 @@ struct MaaResourceAPI : public MaaInstanceSink
virtual MaaBool loaded() const = 0;

virtual std::string get_hash() const = 0;
virtual std::string get_task_list() const = 0;
virtual std::vector<std::string> get_task_list() const = 0;
};

struct MaaControllerAPI : public MaaInstanceSink
Expand Down Expand Up @@ -108,7 +111,7 @@ struct MaaSyncContextAPI
virtual bool touch_move(int contact, int x, int y, int pressure) = 0;
virtual bool touch_up(int contact) = 0;

virtual std::string task_result(const std::string& task_name) const = 0;
virtual json::value task_result(const std::string& task_name) const = 0;

virtual MaaInstanceHandle instance() = 0;
virtual MaaResourceHandle resource() = 0;
Expand Down
6 changes: 6 additions & 0 deletions source/MaaFramework/Resource/PipelineResMgr.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -146,6 +146,12 @@ bool PipelineResMgr::check_next_list(const TaskData::NextList& next_list) const
return true;
}

std::vector<std::string> PipelineResMgr::get_task_list() const
{
auto k = task_data_map_ | MAA_RNS::views::keys;
return std::vector(k.begin(), k.end());
}

bool PipelineResMgr::parse_config(const json::value& input, TaskDataMap& output, std::set<std::string>& existing_keys,
const TaskDataMap& default_value)
{
Expand Down
1 change: 1 addition & 0 deletions source/MaaFramework/Resource/PipelineResMgr.h
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ class PipelineResMgr : public NonCopyable

const std::vector<std::filesystem::path>& get_paths() const { return paths_; }
const TaskDataMap& get_task_data_map() const { return task_data_map_; }
std::vector<std::string> get_task_list() const;

public:
static bool parse_config(const json::value& input, TaskDataMap& output, std::set<std::string>& existing_keys,
Expand Down
8 changes: 2 additions & 6 deletions source/MaaFramework/Resource/ResourceMgr.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -78,13 +78,9 @@ std::string ResourceMgr::get_hash() const
return std::string();
}

std::string ResourceMgr::get_task_list() const
std::vector<std::string> ResourceMgr::get_task_list() const
{
json::array names = {};
for (const auto& kv : pipeline_res_.get_task_data_map()) {
names.push_back(kv.first);
}
return names.to_string();
return pipeline_res_.get_task_list();
}

bool ResourceMgr::run_load(typename AsyncRunner<std::filesystem::path>::Id id, std::filesystem::path path)
Expand Down
2 changes: 1 addition & 1 deletion source/MaaFramework/Resource/ResourceMgr.h
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ class ResourceMgr : public MaaResourceAPI
virtual MaaBool loaded() const override;

virtual std::string get_hash() const override;
virtual std::string get_task_list() const override;
virtual std::vector<std::string> get_task_list() const override;

public:
const auto& pipeline_res() const { return pipeline_res_; }
Expand Down
4 changes: 2 additions & 2 deletions source/MaaFramework/Task/SyncContext.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -192,14 +192,14 @@ cv::Mat SyncContext::screencap()
return ctrl->get_image();
}

std::string SyncContext::task_result(const std::string& task_name) const
json::value SyncContext::task_result(const std::string& task_name) const
{
if (!status()) {
LogError << "Instance status is null";
return {};
}

return status()->get_task_result(task_name).to_string();
return status()->get_task_result(task_name);
}

MAA_TASK_NS_END
2 changes: 1 addition & 1 deletion source/MaaFramework/Task/SyncContext.h
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ class SyncContext : public MaaSyncContextAPI, public MaaInstanceSink
virtual bool touch_up(int contact) override;
virtual cv::Mat screencap() override;

virtual std::string task_result(const std::string& task_name) const override;
virtual json::value task_result(const std::string& task_name) const override;

virtual MaaInstanceHandle instance() override { return dynamic_cast<MaaInstanceHandle>(inst_); }
virtual MaaResourceHandle resource() override { return instance() ? instance()->resource() : nullptr; }
Expand Down

0 comments on commit a5c71cc

Please sign in to comment.