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
No related branches found
No related tags found
No related merge requests found
......@@ -68,10 +68,6 @@ install_scheme_primitives()
void
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_export(name, NULL);
}
......@@ -128,7 +128,9 @@ on_signal_binding(SCM signal_sym, SCM handler_proc)
std::vector<SCM>* callbacks;
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);
......
......@@ -86,7 +86,9 @@ main(int argc, char* argv[])
/* NOTE! It's very important to initialize the daemon before entering Guile!!! */
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 */
scm_with_guile(main_in_guile, (void*)&args);
......
......@@ -22,15 +22,6 @@
#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
to_guile(bool b)
{
......@@ -93,8 +84,9 @@ template<typename... Args>
static inline SCM
apply_to_guile(SCM body_proc, Args... args)
{
AGENT_ASSERT(scm_is_true(scm_procedure_p(body_proc)),
"body_proc must be a procedure");
if (scm_is_false(scm_procedure_p(body_proc))) {
scm_wrong_type_arg_msg("apply_to_guile", 0, body_proc, "procedure");
}
SCM arglst = pack_to_guile(args...);
......@@ -118,16 +110,8 @@ struct from_guile
template<typename Pred>
void ensure_type(const char* msg, Pred&& pred)
{
if (!pred(value)) {
jami::Logger::log(LOG_ERR,
file,
line,
false,
"[GUILE] For expression `%s`: "
"Scheme value must be of type %s\n",
expr,
msg);
exit(EXIT_FAILURE);
if (not pred(value)) {
scm_wrong_type_arg_msg("from_guile", 0, value, msg);
}
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment