in executor/contract/executor/contract_executor.cpp [31:88]
std::unique_ptr<std::string> ContractTransactionManager::ExecuteData(
const std::string& client_request) {
Request request;
Response response;
if (!request.ParseFromString(client_request)) {
LOG(ERROR) << "parse data fail";
return nullptr;
}
int ret = 0;
if (request.cmd() == contract::Request::CREATE_ACCOUNT) {
absl::StatusOr<Account> account_or = CreateAccount();
if (account_or.ok()) {
response.mutable_account()->Swap(&(*account_or));
LOG(ERROR)<<" create count:"<<response.account().DebugString();
} else {
ret = -1;
}
} else if (request.cmd() == contract::Request::DEPLOY) {
absl::StatusOr<Contract> contract_or = Deploy(request);
if (contract_or.ok()) {
response.mutable_contract()->Swap(&(*contract_or));
} else {
ret = -1;
}
} else if (request.cmd() == contract::Request::EXECUTE) {
auto res_or = Execute(request);
if (res_or.ok()) {
response.set_res(*res_or);
} else {
ret = -1;
}
} else if (request.cmd() == resdb::contract::Request::GETBALANCE) {
auto res_or = GetBalance(request);
if (res_or.ok()) {
response.set_res(*res_or);
} else {
ret = -1;
}
} else if (request.cmd() == resdb::contract::Request::SETBALANCE) {
auto res_or = SetBalance(request);
if (res_or.ok()) {
response.set_res("1");
} else {
ret = -1;
}
}
response.set_ret(ret);
std::unique_ptr<std::string> resp_str = std::make_unique<std::string>();
if (!response.SerializeToString(resp_str.get())) {
return nullptr;
}
return resp_str;
}