Skip to content
Snippets Groups Projects
Commit a6148e74 authored by Olivier Dion's avatar Olivier Dion Committed by Adrien Béraud
Browse files

agent: Remove AGENT_ASSERT in favor of Guile exception

Instead of crashing the agent every time there's an error, just throw an
exception that can be handled by the user.

Change-Id: I18ac929e54b9cda6485754ccd52325db7dff66d9
parent 3eb74169
Branches
Tags
No related merge requests found
...@@ -68,10 +68,6 @@ install_scheme_primitives() ...@@ -68,10 +68,6 @@ install_scheme_primitives()
void void
define_primitive(const char* name, int req, int opt, int rst, void* func) define_primitive(const char* name, int req, int opt, int rst, void* func)
{ {
AGENT_ASSERT(req + opt + rst <= 10, "Primitive binding `%s` has too many argument", name);
AGENT_ASSERT(0 == rst or 1 == rst, "Rest argument for binding `%s` must be 0 or 1", name);
scm_c_define_gsubr(name, req, opt, rst, func); scm_c_define_gsubr(name, req, opt, rst, func);
scm_c_export(name, NULL); scm_c_export(name, NULL);
} }
...@@ -128,7 +128,9 @@ on_signal_binding(SCM signal_sym, SCM handler_proc) ...@@ -128,7 +128,9 @@ on_signal_binding(SCM signal_sym, SCM handler_proc)
std::vector<SCM>* callbacks; std::vector<SCM>* callbacks;
std::mutex* mutex; std::mutex* mutex;
AGENT_ASSERT(scm_is_true(scm_procedure_p(handler_proc)), "handler_proc must be a procedure"); if (scm_is_false(scm_procedure_p(handler_proc))) {
scm_wrong_type_arg_msg("on_signal_binding", 0, handler_proc, "procedure");
}
handler_pair = scm_assq_ref(signal_alist, signal_sym); handler_pair = scm_assq_ref(signal_alist, signal_sym);
......
...@@ -86,7 +86,9 @@ main(int argc, char* argv[]) ...@@ -86,7 +86,9 @@ main(int argc, char* argv[])
/* NOTE! It's very important to initialize the daemon before entering Guile!!! */ /* NOTE! It's very important to initialize the daemon before entering Guile!!! */
DRing::init(DRing::InitFlag(DRing::DRING_FLAG_DEBUG)); DRing::init(DRing::InitFlag(DRing::DRING_FLAG_DEBUG));
AGENT_ASSERT(DRing::start(""), "Failed to start daemon"); if (not DRing::start("")) {
scm_misc_error("Dring::start", NULL, 0);
}
/* Entering guile context - This never returns */ /* Entering guile context - This never returns */
scm_with_guile(main_in_guile, (void*)&args); scm_with_guile(main_in_guile, (void*)&args);
......
...@@ -22,15 +22,6 @@ ...@@ -22,15 +22,6 @@
#include "logger.h" #include "logger.h"
#define AGENT_ERR(FMT, ARGS...) JAMI_ERR("AGENT: " FMT, ##ARGS)
#define AGENT_INFO(FMT, ARGS...) JAMI_INFO("AGENT: " FMT, ##ARGS)
#define AGENT_DBG(FMT, ARGS...) JAMI_DBG("AGENT: " FMT, ##ARGS)
#define AGENT_ASSERT(COND, MSG, ARGS...) \
if (not(COND)) { \
AGENT_ERR(MSG, ##ARGS); \
exit(1); \
}
static inline SCM static inline SCM
to_guile(bool b) to_guile(bool b)
{ {
...@@ -93,8 +84,9 @@ template<typename... Args> ...@@ -93,8 +84,9 @@ template<typename... Args>
static inline SCM static inline SCM
apply_to_guile(SCM body_proc, Args... args) apply_to_guile(SCM body_proc, Args... args)
{ {
AGENT_ASSERT(scm_is_true(scm_procedure_p(body_proc)), if (scm_is_false(scm_procedure_p(body_proc))) {
"body_proc must be a procedure"); scm_wrong_type_arg_msg("apply_to_guile", 0, body_proc, "procedure");
}
SCM arglst = pack_to_guile(args...); SCM arglst = pack_to_guile(args...);
...@@ -118,16 +110,8 @@ struct from_guile ...@@ -118,16 +110,8 @@ struct from_guile
template<typename Pred> template<typename Pred>
void ensure_type(const char* msg, Pred&& pred) void ensure_type(const char* msg, Pred&& pred)
{ {
if (!pred(value)) { if (not pred(value)) {
jami::Logger::log(LOG_ERR, scm_wrong_type_arg_msg("from_guile", 0, value, msg);
file,
line,
false,
"[GUILE] For expression `%s`: "
"Scheme value must be of type %s\n",
expr,
msg);
exit(EXIT_FAILURE);
} }
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment