Grassroots Infrastructure
The Grassroots Infrastructure is a suite of computing tools to help users and developers use scientific data infrastructure that can easily be interconnected.
jobs_manager.h
Go to the documentation of this file.
1 /*
2 ** Copyright 2014-2016 The Earlham Institute
3 **
4 ** Licensed under the Apache License, Version 2.0 (the "License");
5 ** you may not use this file except in compliance with the License.
6 ** You may obtain a copy of the License at
7 **
8 ** http://www.apache.org/licenses/LICENSE-2.0
9 **
10 ** Unless required by applicable law or agreed to in writing, software
11 ** distributed under the License is distributed on an "AS IS" BASIS,
12 ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 ** See the License for the specific language governing permissions and
14 ** limitations under the License.
15 */
16 
21 /*
22  * running_services_table.h
23  *
24  * Created on: 17 Apr 2015
25  * Author: tyrrells
26  */
27 
28 #ifndef JOBS_MANAGER_H
29 #define JOBS_MANAGER_H
30 
31 #include "hash_table.h"
32 #include "service.h"
33 #include "service_job.h"
35 #include "uuid_defs.h"
36 
37 
38 #ifndef DOXYGEN_SHOULD_SKIP_THIS
39 
40 #ifdef ALLOCATE_JOBS_MANAGER_TAGS
41  #define JOBS_MANAGER_PREFIX GRASSROOTS_SERVICE_MANAGER_API
42  #define JOBS_MANAGER_VAL(x) = x
43 #else
44  #define JOBS_MANAGER_PREFIX extern GRASSROOTS_SERVICE_MANAGER_API
45  #define JOBS_MANAGER_VAL(x)
46 #endif
47 
48 #endif
49 
50 
51 
59 /* forward declaration */
60 struct JobsManager;
61 struct Plugin;
62 struct GrassrootsServer;
63 
64 
75 typedef unsigned char *(*ServiceJobSerialiser) (ServiceJob *job_p, uint32 *length_p);
76 
77 
88 typedef ServiceJob *(*ServiceJobDeserialiser) (unsigned char *input_data_p, void *config_p);
89 
90 
98 typedef struct JobsManager
99 {
102 
114  bool (*jm_add_job_fn) (struct JobsManager *manager_p, uuid_t job_key, ServiceJob *job_p);
115 
128  ServiceJob *(*jm_get_job_fn) (struct JobsManager *manager_p, const uuid_t key);
129 
130 
144  ServiceJob *(*jm_remove_job_fn) (struct JobsManager *manager_p, const uuid_t key, bool get_job_flag);
145 
146 
147 
157  LinkedList *(*jm_get_all_jobs_fn) (struct JobsManager *manager_p);
158 
165  bool (*jm_delete_manager_fn) (struct JobsManager *manager_p);
166 
167 } JobsManager;
168 
169 
170 #ifdef __cplusplus
171  extern "C" {
172 #endif
173 
174 
175 
176 
191  bool (*add_job_fn) (JobsManager *manager_p, uuid_t job_key, ServiceJob *job_p),
192  ServiceJob *(*get_job_fn) (JobsManager *manager_p, const uuid_t key),
193  ServiceJob *(*remove_job_fn) (JobsManager *manager_p, const uuid_t key, bool get_job_flag),
194  LinkedList *(*get_all_jobs_fn) (struct JobsManager *manager_p),
195  bool (*delete_manager_fn) (struct JobsManager *manager_p));
196 
197 
198 
208 
209 
225 
226 
241 
242 
262 
263 
276 
277 
286 GRASSROOTS_SERVICE_MANAGER_API JobsManager *LoadJobsManager (const char *jobs_manager_s, struct GrassrootsServer *server_p);
287 
288 
290 
291 
292 #ifdef __cplusplus
293 }
294 #endif
295 
296 #endif /* JOBS_MANAGER_H */
JobsManager::jm_plugin_p
struct Plugin * jm_plugin_p
The plugin that thjis JobsManager was loaded from.
Definition: jobs_manager.h:101
JobsManager::jm_add_job_fn
bool(* jm_add_job_fn)(struct JobsManager *manager_p, uuid_t job_key, ServiceJob *job_p)
Add a ServiceJob to the JobsManager.
Definition: jobs_manager.h:114
JobsManager::LoadJobsManager
JobsManager * LoadJobsManager(const char *jobs_manager_s, struct GrassrootsServer *server_p)
Load and create a JobsManager from the named plugin.
service.h
ServiceJob
A datatype to represent a running task.
Definition: service_job.h:72
JobsManager
A datatype for monitoring ServiceJobs.
Definition: jobs_manager.h:98
grassroots_service_manager_library.h
JobsManager::AddServiceJobToJobsManager
bool AddServiceJobToJobsManager(JobsManager *manager_p, uuid_t job_key, ServiceJob *job_p)
Add a ServiceJob to the JobsManager.
uuid_defs.h
JobsManager::FreeJobsManager
bool FreeJobsManager(JobsManager *manager_p)
Free a JobsManager.
LinkedList
A doubly-linked list that can be traversed in either direction.
Definition: linked_list.h:56
JobsManager::GetServiceJobFromJobsManager
ServiceJob * GetServiceJobFromJobsManager(JobsManager *manager_p, const uuid_t key)
Find a ServiceJob.
Plugin
A Plugin is a dynamically-loaded component to provide a piece of functionality.
Definition: plugin.h:150
service_job.h
GrassrootsServer
Definition: grassroots_server.h:45
JobsManager::GetAllServiceJobsFromJobsManager
LinkedList * GetAllServiceJobsFromJobsManager(struct JobsManager *manager_p)
Get all ServiceJobs.
GetGrassrootsServerFromJobsManager
struct GrassrootsServer * GetGrassrootsServerFromJobsManager(const JobsManager *const manager_p)
JobsManager::RemoveServiceJobFromJobsManager
ServiceJob * RemoveServiceJobFromJobsManager(JobsManager *manager_p, const uuid_t key, bool get_job_flag)
Remove a ServiceJob.
JobsManager::InitJobsManager
void InitJobsManager(JobsManager *manager_p, bool(*add_job_fn)(JobsManager *manager_p, uuid_t job_key, ServiceJob *job_p), ServiceJob *(*get_job_fn)(JobsManager *manager_p, const uuid_t key), ServiceJob *(*remove_job_fn)(JobsManager *manager_p, const uuid_t key, bool get_job_flag), LinkedList *(*get_all_jobs_fn)(struct JobsManager *manager_p), bool(*delete_manager_fn)(struct JobsManager *manager_p))
Initialise a JobsManager.
JobsManager::jm_delete_manager_fn
bool(* jm_delete_manager_fn)(struct JobsManager *manager_p)
The function to use to delete this JobsManager,.
Definition: jobs_manager.h:165
GRASSROOTS_SERVICE_MANAGER_API
#define GRASSROOTS_SERVICE_MANAGER_API
Definition: grassroots_service_manager_library.h:46
hash_table.h
uuid_t
Definition: windows_uuid.h:43