Skip to content
Snippets Groups Projects
Verified Commit f8bdb597 authored by Alberto Miranda's avatar Alberto Miranda :hotsprings:
Browse files

Add ADM_strerror()

parent 754f6f57
No related branches found
No related tags found
1 merge request!10Resolve "Add API function to print out error messages"
...@@ -26,7 +26,7 @@ add_library(adm_iosched SHARED) ...@@ -26,7 +26,7 @@ add_library(adm_iosched SHARED)
target_sources(adm_iosched target_sources(adm_iosched
PUBLIC admire.h admire.hpp PUBLIC admire.h admire.hpp
PRIVATE admire.cpp c_wrapper.cpp detail/impl.hpp detail/impl.cpp) PRIVATE admire.cpp c_wrapper.cpp detail/impl.hpp detail/impl.cpp errors.c)
target_include_directories(adm_iosched PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) target_include_directories(adm_iosched PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
......
...@@ -60,16 +60,15 @@ register_job(const server& srv, ADM_job_requirements_t reqs) { ...@@ -60,16 +60,15 @@ register_job(const server& srv, ADM_job_requirements_t reqs) {
const auto rv = detail::register_job(srv, reqs); const auto rv = detail::register_job(srv, reqs);
if(!rv) { if(!rv) {
/* TODO ADM_strerror(rv.error()) */ throw std::runtime_error(fmt::format("ADM_register_job() error: {}",
throw std::runtime_error("ADM_register_job() error"); ADM_strerror(rv.error())));
} }
return rv.value(); return rv.value();
} }
ADM_return_t ADM_return_t
update_job(const server& srv, ADM_job_t job, update_job(const server& srv, ADM_job_t job, ADM_job_requirements_t reqs) {
ADM_job_requirements_t reqs) {
(void) srv; (void) srv;
(void) job; (void) job;
(void) reqs; (void) reqs;
...@@ -152,8 +151,7 @@ register_adhoc_storage(const server& srv, ADM_job_t job, ...@@ -152,8 +151,7 @@ register_adhoc_storage(const server& srv, ADM_job_t job,
} }
ADM_return_t ADM_return_t
update_adhoc_storage(const server& srv, ADM_job_t job, update_adhoc_storage(const server& srv, ADM_job_t job, ADM_adhoc_context_t ctx,
ADM_adhoc_context_t ctx,
ADM_adhoc_storage_handle_t adhoc_handle) { ADM_adhoc_storage_handle_t adhoc_handle) {
(void) srv; (void) srv;
(void) job; (void) job;
...@@ -301,8 +299,8 @@ set_dataset_information(const server& srv, ADM_job_t job, ...@@ -301,8 +299,8 @@ set_dataset_information(const server& srv, ADM_job_t job,
} }
ADM_return_t ADM_return_t
set_io_resources(const server& srv, ADM_job_t job, set_io_resources(const server& srv, ADM_job_t job, ADM_storage_handle_t tier,
ADM_storage_handle_t tier, ADM_storage_resources_t resources) { ADM_storage_resources_t resources) {
(void) srv; (void) srv;
(void) job; (void) job;
(void) tier; (void) tier;
...@@ -447,8 +445,7 @@ get_pending_transfers(const server& srv, ADM_job_t job, ...@@ -447,8 +445,7 @@ get_pending_transfers(const server& srv, ADM_job_t job,
} }
ADM_return_t ADM_return_t
set_qos_constraints(const server& srv, ADM_job_t job, set_qos_constraints(const server& srv, ADM_job_t job, ADM_limit_t limit) {
ADM_limit_t limit) {
(void) srv; (void) srv;
(void) job; (void) job;
(void) limit; (void) limit;
...@@ -477,9 +474,8 @@ set_qos_constraints(const server& srv, ADM_job_t job, ...@@ -477,9 +474,8 @@ set_qos_constraints(const server& srv, ADM_job_t job,
} }
ADM_return_t ADM_return_t
get_qos_constraints(const server& srv, ADM_job_t job, get_qos_constraints(const server& srv, ADM_job_t job, ADM_qos_scope_t scope,
ADM_qos_scope_t scope, ADM_qos_entity_t entity, ADM_qos_entity_t entity, ADM_limit_t** limits) {
ADM_limit_t** limits) {
(void) srv; (void) srv;
(void) job; (void) job;
(void) scope; (void) scope;
...@@ -641,8 +637,7 @@ link_transfer_to_data_operation(const server& srv, ADM_job_t job, ...@@ -641,8 +637,7 @@ link_transfer_to_data_operation(const server& srv, ADM_job_t job,
} }
ADM_return_t ADM_return_t
get_statistics(const server& srv, ADM_job_t job, get_statistics(const server& srv, ADM_job_t job, ADM_job_stats_t** stats) {
ADM_job_stats_t** stats) {
(void) srv; (void) srv;
(void) job; (void) job;
(void) stats; (void) stats;
......
...@@ -46,9 +46,11 @@ extern "C" { ...@@ -46,9 +46,11 @@ extern "C" {
/* Error return codes */ /* Error return codes */
typedef enum { typedef enum {
ADM_SUCCESS = 0, ADM_SUCCESS = 0,
ADM_EINVAL, ADM_ESNAFU,
// generic error code ADM_EBADARGS,
ADM_OTHER_ERROR ADM_ENOMEM,
ADM_EOTHER,
ADM_ERR_MAX = 512
} ADM_return_t; } ADM_return_t;
/* A server */ /* A server */
...@@ -579,6 +581,16 @@ ADM_link_transfer_to_data_operation(ADM_server_t server, ADM_job_t job, ...@@ -579,6 +581,16 @@ ADM_link_transfer_to_data_operation(ADM_server_t server, ADM_job_t job,
ADM_return_t ADM_return_t
ADM_get_statistics(ADM_server_t server, ADM_job_t job, ADM_job_stats_t** stats); ADM_get_statistics(ADM_server_t server, ADM_job_t job, ADM_job_stats_t** stats);
/**
* Return a string describing the error number
*
* @param[in] errnum The error number for which a description should be
* returned.
* @return A pointer to a string describing `errnum`.
*/
const char*
ADM_strerror(ADM_return_t errnum);
#ifdef __cplusplus #ifdef __cplusplus
} // extern "C" } // extern "C"
#endif #endif
......
...@@ -77,7 +77,7 @@ ADM_server_destroy(ADM_server_t server) { ...@@ -77,7 +77,7 @@ ADM_server_destroy(ADM_server_t server) {
if(!server) { if(!server) {
LOGGER_ERROR("Invalid ADM_server_t") LOGGER_ERROR("Invalid ADM_server_t")
return ADM_EINVAL; return ADM_EBADARGS;
} }
free(server); free(server);
...@@ -106,7 +106,7 @@ ADM_dataset_destroy(ADM_dataset_handle_t dataset) { ...@@ -106,7 +106,7 @@ ADM_dataset_destroy(ADM_dataset_handle_t dataset) {
if(!dataset) { if(!dataset) {
LOGGER_ERROR("Invalid ADM_dataset_t") LOGGER_ERROR("Invalid ADM_dataset_t")
return ADM_EINVAL; return ADM_EBADARGS;
} }
free(dataset); free(dataset);
...@@ -142,7 +142,7 @@ ADM_job_requirements_destroy(ADM_job_requirements_t reqs) { ...@@ -142,7 +142,7 @@ ADM_job_requirements_destroy(ADM_job_requirements_t reqs) {
if(!reqs) { if(!reqs) {
LOGGER_ERROR("Invalid ADM_job_requirements_t") LOGGER_ERROR("Invalid ADM_job_requirements_t")
return ADM_EINVAL; return ADM_EBADARGS;
} }
free(reqs); free(reqs);
...@@ -188,7 +188,7 @@ ADM_register_job(ADM_server_t server, ADM_job_requirements_t reqs, ...@@ -188,7 +188,7 @@ ADM_register_job(ADM_server_t server, ADM_job_requirements_t reqs,
const auto jh = ADM_job_create(rv->m_id); const auto jh = ADM_job_create(rv->m_id);
if(!jh) { if(!jh) {
return ADM_OTHER_ERROR; return ADM_EOTHER;
} }
*job = jh; *job = jh;
......
...@@ -47,8 +47,7 @@ register_job(const admire::server& srv, ADM_job_requirements_t reqs) { ...@@ -47,8 +47,7 @@ register_job(const admire::server& srv, ADM_job_requirements_t reqs) {
if(out.ret < 0) { if(out.ret < 0) {
LOGGER_ERROR("ADM_register_job() = {}", out.ret); LOGGER_ERROR("ADM_register_job() = {}", out.ret);
/* TODO ADM_strerror(out.ret) */ return tl::make_unexpected(static_cast<admire::error_code>(out.ret));
throw std::runtime_error("ADM_register_job() error");
} }
LOGGER_INFO("ADM_register_job() = {}", ADM_SUCCESS); LOGGER_INFO("ADM_register_job() = {}", ADM_SUCCESS);
......
/******************************************************************************
* Copyright 2021-2022, Barcelona Supercomputing Center (BSC), Spain
*
* This software was partially supported by the EuroHPC-funded project ADMIRE
* (Project ID: 956748, https://www.admire-eurohpc.eu).
*
* This file is part of scord.
*
* scord is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* scord is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with scord. If not, see <https://www.gnu.org/licenses/>.
*
* SPDX-License-Identifier: GPL-3.0-or-later
*****************************************************************************/
#include <admire.h>
const char* const adm_errlist[ADM_ERR_MAX + 1] = {
[ADM_SUCCESS] = "Success",
[ADM_ESNAFU] = "Internal error",
[ADM_EBADARGS] = "Bad arguments",
[ADM_ENOMEM] = "Cannot allocate memory",
[ADM_EOTHER] = "Undetermined error",
/* fallback */
[ADM_ERR_MAX] = "Unknown error",
};
const char*
ADM_strerror(ADM_return_t errnum) {
if(errnum > ADM_ERR_MAX) {
errnum = ADM_ERR_MAX;
}
const char* s = adm_errlist[errnum];
return s ? s : adm_errlist[ADM_EOTHER];
}
//
// Created by amiranda on 28/06/22.
//
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment