prepare for #6133: extend report-lib with API for signal handling
This commit is contained in:
parent
ef0eb9e5bf
commit
5d4d5dcaf4
@ -72,6 +72,36 @@ struct GNUNET_TIME_Absolute start_time;
|
|||||||
*/
|
*/
|
||||||
static struct GNUNET_CONTAINER_MultiHashMap *denominations;
|
static struct GNUNET_CONTAINER_MultiHashMap *denominations;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Flag that is raised to 'true' if the user
|
||||||
|
* presses CTRL-C to abort the audit.
|
||||||
|
*/
|
||||||
|
static volatile bool abort_flag;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Context for the SIG-INT (ctrl-C) handler.
|
||||||
|
*/
|
||||||
|
static struct GNUNET_SIGNAL_Context *sig_int;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Context for the SIGTERM handler.
|
||||||
|
*/
|
||||||
|
static struct GNUNET_SIGNAL_Context *sig_term;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test if the audit should be aborted because the user
|
||||||
|
* pressed CTRL-C.
|
||||||
|
*
|
||||||
|
* @return false to continue the audit, true to terminate
|
||||||
|
* cleanly as soon as possible
|
||||||
|
*/
|
||||||
|
bool
|
||||||
|
TALER_ARL_do_abort (void)
|
||||||
|
{
|
||||||
|
return abort_flag;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Convert absolute time to human-readable JSON string.
|
* Convert absolute time to human-readable JSON string.
|
||||||
@ -605,6 +635,16 @@ TALER_ARL_amount_subtract_neg_ (struct TALER_Amount *diff,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Signal handler called for signals that should cause us to shutdown.
|
||||||
|
*/
|
||||||
|
static void
|
||||||
|
handle_sigint (void)
|
||||||
|
{
|
||||||
|
abort_flag = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Setup global variables based on configuration.
|
* Setup global variables based on configuration.
|
||||||
*
|
*
|
||||||
@ -672,11 +712,30 @@ TALER_ARL_init (const struct GNUNET_CONFIGURATION_Handle *c)
|
|||||||
return GNUNET_SYSERR;
|
return GNUNET_SYSERR;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
sig_int = GNUNET_SIGNAL_handler_install (SIGINT,
|
||||||
|
&handle_sigint);
|
||||||
|
if (NULL == sig_int)
|
||||||
|
{
|
||||||
|
GNUNET_log_strerror (GNUNET_ERROR_TYPE_ERROR,
|
||||||
|
"signal");
|
||||||
|
TALER_ARL_done (NULL);
|
||||||
|
return GNUNET_SYSERR;
|
||||||
|
}
|
||||||
|
sig_term = GNUNET_SIGNAL_handler_install (SIGTERM,
|
||||||
|
&handle_sigint);
|
||||||
|
if (NULL == sig_term)
|
||||||
|
{
|
||||||
|
GNUNET_log_strerror (GNUNET_ERROR_TYPE_ERROR,
|
||||||
|
"signal");
|
||||||
|
TALER_ARL_done (NULL);
|
||||||
|
return GNUNET_SYSERR;
|
||||||
|
}
|
||||||
if (NULL ==
|
if (NULL ==
|
||||||
(TALER_ARL_edb = TALER_EXCHANGEDB_plugin_load (TALER_ARL_cfg)))
|
(TALER_ARL_edb = TALER_EXCHANGEDB_plugin_load (TALER_ARL_cfg)))
|
||||||
{
|
{
|
||||||
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
|
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
|
||||||
"Failed to initialize exchange database plugin.\n");
|
"Failed to initialize exchange database plugin.\n");
|
||||||
|
TALER_ARL_done (NULL);
|
||||||
return GNUNET_SYSERR;
|
return GNUNET_SYSERR;
|
||||||
}
|
}
|
||||||
if (NULL ==
|
if (NULL ==
|
||||||
@ -727,6 +786,16 @@ TALER_ARL_done (json_t *report)
|
|||||||
{
|
{
|
||||||
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
|
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
|
||||||
"Audit complete\n");
|
"Audit complete\n");
|
||||||
|
if (NULL != sig_int)
|
||||||
|
{
|
||||||
|
GNUNET_SIGNAL_handler_uninstall (sig_int);
|
||||||
|
sig_int = NULL;
|
||||||
|
}
|
||||||
|
if (NULL != sig_term)
|
||||||
|
{
|
||||||
|
GNUNET_SIGNAL_handler_uninstall (sig_term);
|
||||||
|
sig_term = NULL;
|
||||||
|
}
|
||||||
if (NULL != TALER_ARL_adb)
|
if (NULL != TALER_ARL_adb)
|
||||||
{
|
{
|
||||||
TALER_AUDITORDB_plugin_unload (TALER_ARL_adb);
|
TALER_AUDITORDB_plugin_unload (TALER_ARL_adb);
|
||||||
|
@ -301,6 +301,17 @@ TALER_ARL_setup_sessions_and_run (TALER_ARL_Analysis ana,
|
|||||||
void *ana_cls);
|
void *ana_cls);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test if the audit should be aborted because the user
|
||||||
|
* pressed CTRL-C.
|
||||||
|
*
|
||||||
|
* @return false to continue the audit, true to terminate
|
||||||
|
* cleanly as soon as possible
|
||||||
|
*/
|
||||||
|
bool
|
||||||
|
TALER_ARL_do_abort (void);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Setup global variables based on configuration.
|
* Setup global variables based on configuration.
|
||||||
*
|
*
|
||||||
|
Loading…
Reference in New Issue
Block a user