mirror of
https://git.jami.net/savoirfairelinux/jami-daemon.git
synced 2025-08-07 22:02:12 +08:00
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
This commit is contained in:

committed by
Adrien Béraud

parent
3eb7416985
commit
a6148e7420
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user