blob: 474421a529aca961b44b0575bdbb94d1824b743c [file] [log] [blame] [edit]
// Copyright 2022 The ChromiumOS Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "ml_benchmark/driver_common/utils.h"
#include <cstdint>
#include <string>
#include "proto/benchmark_config.pb.h"
namespace chrome {
namespace ml_benchmark {
int32_t SerializeResults(const BenchmarkResults& results,
void** results_data,
int32_t* results_size) {
CHECK(results_data);
CHECK(results_size);
const std::string result_pb = results.SerializeAsString();
CHECK(!result_pb.empty());
const int32_t size = result_pb.size();
char* const data = new char[size];
result_pb.copy(data, size);
*results_data = data;
*results_size = size;
return results.status();
}
int32_t SerializeError(const std::string& error_message,
BenchmarkReturnStatus status,
void** results_data,
int32_t* results_size) {
chrome::ml_benchmark::BenchmarkResults results;
results.set_status(status);
results.set_results_message(error_message);
return SerializeResults(results, results_data, results_size);
}
void FreeSerializedResults(void* results_data) {
delete[] static_cast<char*>(results_data);
}
} // namespace ml_benchmark
} // namespace chrome