aboutsummaryrefslogtreecommitdiffstats
path: root/dirmngr/dirmngr.h
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2017-11-14 12:42:18 +0000
committerWerner Koch <[email protected]>2017-12-11 10:30:45 +0000
commitf2997adee0455c8c0fa391a853ec1b0c9fc43342 (patch)
tree806bfaca7f4700c446e5963573f1a81c087c8917 /dirmngr/dirmngr.h
parentdirmngr: Limit the number of cached domains for WKD. (diff)
downloadgnupg-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.h13
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*/