diff options
author | Werner Koch <[email protected]> | 2017-11-14 12:42:18 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 2017-12-11 10:30:45 +0000 |
commit | f2997adee0455c8c0fa391a853ec1b0c9fc43342 (patch) | |
tree | 806bfaca7f4700c446e5963573f1a81c087c8917 /dirmngr/dirmngr.h | |
parent | dirmngr: Limit the number of cached domains for WKD. (diff) | |
download | gnupg-f2997adee0455c8c0fa391a853ec1b0c9fc43342.tar.gz gnupg-f2997adee0455c8c0fa391a853ec1b0c9fc43342.zip |
dirmngr: Add a background task framework.
* dirmngr/workqueue.c: New.
* dirmngr/Makefile.am (dirmngr_SOURCES): Add new file.
* dirmngr/server.c (server_local_s): New field session_id.
(cmd_wkd_get): Add a task.
(task_check_wkd_support): New stub function.
(cmd_getinfo): New sub-commands "session_id" and "workqueue".
(start_command_handler): Add arg session_id and store it in
SERVER_LOCAL.
(dirmngr_status_helpf): New.
* dirmngr/dirmngr.h (wqtask_t): New type.
* dirmngr/dirmngr.c (main): Pass 0 as session_id to
start_command_handler.
(start_connection_thread): Introduce a session_id and pass it to
start_command_handler. Run post session tasks.
(housekeeping_thread): Run global workqueue tasks.
--
Signed-off-by: Werner Koch <[email protected]>
(cherry picked from commit 96a4fbecd1acf946dcde20bef4752c539dae196b)
Diffstat (limited to 'dirmngr/dirmngr.h')
-rw-r--r-- | dirmngr/dirmngr.h | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/dirmngr/dirmngr.h b/dirmngr/dirmngr.h index b08e4fea7..5189f93b1 100644 --- a/dirmngr/dirmngr.h +++ b/dirmngr/dirmngr.h @@ -228,9 +228,11 @@ ksba_cert_t get_cert_local_ski (ctrl_t ctrl, gpg_error_t get_istrusted_from_client (ctrl_t ctrl, const char *hexfpr); int dirmngr_assuan_log_monitor (assuan_context_t ctx, unsigned int cat, const char *msg); -void start_command_handler (gnupg_fd_t fd); +void start_command_handler (gnupg_fd_t fd, unsigned int session_id); gpg_error_t dirmngr_status (ctrl_t ctrl, const char *keyword, ...); gpg_error_t dirmngr_status_help (ctrl_t ctrl, const char *text); +gpg_error_t dirmngr_status_helpf (ctrl_t ctrl, const char *format, + ...) GPGRT_ATTR_PRINTF(2,3); gpg_error_t dirmngr_status_printf (ctrl_t ctrl, const char *keyword, const char *format, ...) GPGRT_ATTR_PRINTF(3,4); @@ -258,6 +260,15 @@ void domaininfo_set_wkd_supported (const char *domain); void domaininfo_set_wkd_not_supported (const char *domain); void domaininfo_set_wkd_not_found (const char *domain); +/*-- workqueue.c --*/ +typedef const char *(*wqtask_t)(ctrl_t ctrl, const char *args); + +void workqueue_dump_queue (ctrl_t ctrl); +gpg_error_t workqueue_add_task (wqtask_t func, const char *args, + unsigned int session_id, int need_network); +void workqueue_run_global_tasks (ctrl_t ctrl, int with_network); +void workqueue_run_post_session_tasks (unsigned int session_id); + #endif /*DIRMNGR_H*/ |