2 * (C) Copyright 2012 Red Hat Inc.
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
14 * You should have received a copy of the GNU General Public License
15 * along with this program; if not, write to the Free Software
16 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
19 /* This is the protocol used to talk between the client (whenjobs) and
20 * the daemon (whenjobsd). Communication happens over a Unix domain
21 * socket '$HOME/.whenjobs/socket'. The wire protocol is SunRPC.
24 /* Maximum lengths and some useful typedefs. */
25 const MAX_VARIABLE_NAME_LENGTH = 256;
26 const MAX_VARIABLE_VALUE_LENGTH = 65536;
27 const MAX_JOB_NAME_LENGTH = 256;
28 const MAX_BIG_INT_LENGTH = 64; /* when encoded as a string */
29 const MAX_PATH_LENGTH = 4096;
31 typedef string variable_name<MAX_VARIABLE_NAME_LENGTH>;
32 typedef string string_value<MAX_VARIABLE_VALUE_LENGTH>;
33 typedef string job_name<MAX_JOB_NAME_LENGTH>;
34 typedef string string_big_int<MAX_BIG_INT_LENGTH>;
35 typedef string path<MAX_PATH_LENGTH>;
37 typedef variable_name variable_name_list<>;
39 /* Status code (OK or error) returned by most calls. */
45 union status switch (status_code s) {
60 union variable switch (variable_type t) {
68 string_big_int i; /* OCaml [big_int], as a string. */
70 double f; /* C 'double' maps to an OCaml 'float' */
75 string_big_int job_serial;
80 typedef job job_list<>;
82 /* The API of the daemon. */
85 status reload_file (void) = 1;
86 status set_variable (variable_name, variable) = 2;
87 variable get_variable (variable_name) = 3;
88 variable_name_list get_variable_names (void) = 4;
89 status exit_daemon (void) = 5;
90 job_list get_jobs (void) = 6;
91 status cancel_job (string_big_int) = 7;
92 status start_job (job_name) = 8;
93 job get_job (string_big_int) = 9;