1/* -*- mode: C++; c-basic-offset: 4; indent-tabs-mode: nil -*- */
2// vim: ft=cpp:expandtab:ts=8:sw=4:softtabstop=4:
3#ident "$Id$"
4/*======
5This file is part of PerconaFT.
6
7
8Copyright (c) 2006, 2015, Percona and/or its affiliates. All rights reserved.
9
10 PerconaFT is free software: you can redistribute it and/or modify
11 it under the terms of the GNU General Public License, version 2,
12 as published by the Free Software Foundation.
13
14 PerconaFT is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License for more details.
18
19 You should have received a copy of the GNU General Public License
20 along with PerconaFT. If not, see <http://www.gnu.org/licenses/>.
21
22----------------------------------------
23
24 PerconaFT is free software: you can redistribute it and/or modify
25 it under the terms of the GNU Affero General Public License, version 3,
26 as published by the Free Software Foundation.
27
28 PerconaFT is distributed in the hope that it will be useful,
29 but WITHOUT ANY WARRANTY; without even the implied warranty of
30 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
31 GNU Affero General Public License for more details.
32
33 You should have received a copy of the GNU Affero General Public License
34 along with PerconaFT. If not, see <http://www.gnu.org/licenses/>.
35======= */
36
37#ident "Copyright (c) 2006, 2015, Percona and/or its affiliates. All rights reserved."
38
39#pragma once
40
41//
42// The background job manager keeps track of the existence of
43// background jobs running. We use the background job manager
44// to allow threads to perform background jobs on various pieces
45// of the system (e.g. cachefiles and cloned pairs being written out
46// for checkpoint)
47//
48
49typedef struct background_job_manager_struct *BACKGROUND_JOB_MANAGER;
50
51
52void bjm_init(BACKGROUND_JOB_MANAGER* bjm);
53void bjm_destroy(BACKGROUND_JOB_MANAGER bjm);
54
55//
56// Re-allows a background job manager to accept background jobs
57//
58void bjm_reset(BACKGROUND_JOB_MANAGER bjm);
59
60//
61// add a background job. If return value is 0, then the addition of the job
62// was successful and the user may perform the background job. If return
63// value is non-zero, then adding of the background job failed and the user
64// may not perform the background job.
65//
66int bjm_add_background_job(BACKGROUND_JOB_MANAGER bjm);
67
68//
69// remove a background job
70//
71void bjm_remove_background_job(BACKGROUND_JOB_MANAGER bjm);
72
73//
74// This function waits for all current background jobs to be removed. If the user
75// calls bjm_add_background_job while this function is running, or after this function
76// has completed, bjm_add_background_job returns an error.
77//
78void bjm_wait_for_jobs_to_finish(BACKGROUND_JOB_MANAGER bjm);
79