* -------------------------------------------------------------------------
* This file is part of the MindStudio project.
* Copyright (c) 2025 Huawei Technologies Co.,Ltd.
*
* MindStudio is licensed under Mulan PSL v2.
* You can use this software according to the terms and conditions of the Mulan PSL v2.
* You may obtain a copy of Mulan PSL v2 at:
*
* http://license.coscl.org.cn/MulanPSL2
*
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PSL v2 for more details.
* -------------------------------------------------------------------------
*/
#ifndef DIC_SOURCE_PROTOCOL_SOURCE_REQUEST_H
#define DIC_SOURCE_PROTOCOL_SOURCE_REQUEST_H
#include <string>
#include <optional>
#include <vector>
#include "ProtocolDefs.h"
#include "ProtocolMessage.h"
namespace Dic {
namespace Protocol {
struct SourceCodeFileParams {
std::string sourceName;
std::tuple<bool, std::string> Valid() {
std::string errMsg;
bool res = CheckStrParamValid(sourceName, errMsg);
return {res, errMsg};
}
};
struct SourceCodeFileRequest : public Request {
SourceCodeFileRequest() : Request(REQ_RES_SOURCE_CODE_FILE) {};
SourceCodeFileParams params;
};
struct SourceApiLineParams {
std::string coreName;
std::string sourceName;
std::tuple<bool, std::string> Valid() {
std::string errMsg;
bool res = CheckStrParamValid(coreName, errMsg);
if (!res) {
return {res, errMsg};
}
res = CheckStrParamValid(sourceName, errMsg);
return {res, errMsg};
}
};
struct SourceApiLineRequest : public Request {
SourceApiLineRequest() : Request(REQ_RES_SOURCE_API_LINE) {};
SourceApiLineParams params;
};
struct SourceApiLineDynamicRequest : public Request {
SourceApiLineDynamicRequest() : Request(REQ_RES_SOURCE_API_LINE_DYNAMIC) {};
SourceApiLineParams params;
};
struct SourceApiInstrParams {
std::string coreName;
std::tuple<bool, std::string> Valid() {
std::string errMsg;
bool res = CheckStrParamValid(coreName, errMsg);
if (!res) {
return {res, errMsg};
}
return {res, errMsg};
}
};
struct SourceApiInstrDynamicRequest : public Request {
SourceApiInstrDynamicRequest() : Request(REQ_RES_SOURCE_API_INSTRUCTIONS) {};
SourceApiInstrParams params;
};
struct SourceApiInstrRequest : public Request {
SourceApiInstrRequest() : Request(REQ_RES_SOURCE_API_INSTRUCTIONS) {};
};
struct SourceDetailBaseInfoParams {
bool isCompared = false;
};
struct SourceDetailBaseInfoRequest : public Request {
SourceDetailBaseInfoRequest() : Request(REQ_RES_DETAILS_BASE_INFO) {};
SourceDetailBaseInfoParams params;
};
struct SourceDetailLoadInfoParams {
bool isCompared = false;
};
struct SourceDetailsLoadInfoRequest : public Request {
SourceDetailsLoadInfoRequest() : Request(REQ_RES_DETAILS_COMPUTE_LOAD_INFO) {};
SourceDetailLoadInfoParams params;
};
struct DetailsMemoryInfoParams {
std::string blockId;
bool isCompared = false;
std::tuple<bool, std::string> Valid() {
std::string errMsg;
bool res = CheckStrParamValid(blockId, errMsg);
return {res, errMsg};
}
};
struct DetailsMemoryGraphRequest : public Request {
DetailsMemoryGraphRequest() : Request(REQ_RES_DETAILS_COMPUTE_MEMORY_GRAPH) {};
DetailsMemoryInfoParams params;
};
struct DetailsMemoryTableRequest : public Request {
DetailsMemoryTableRequest() : Request(REQ_RES_DETAILS_COMPUTE_MEMORY_TABLE) {};
DetailsMemoryInfoParams params;
};
struct DetailsInterCoreLoadGraphParams {
bool isCompared = false;
};
struct DetailsInterCoreLoadGraphRequest : public Request {
DetailsInterCoreLoadGraphRequest() : Request(REQ_RES_DETAILS_INTER_CORE_LOAD_GRAPH) {};
DetailsInterCoreLoadGraphParams params;
};
struct DetailsRooflineParams {};
struct DetailsRooflineRequest : public Request {
DetailsRooflineRequest() : Request(REQ_RES_DETAILS_ROOFLINE) {};
DetailsRooflineParams params;
};
}
}
#endif