X-Git-Url: http://git.annexia.org/?p=whenjobs.git;a=blobdiff_plain;f=lib%2Fwhenproto.x;h=ff5edfba9d9632543f25ad745fa2faf19f238bb2;hp=2ca662f25cb649aa3ce1fea96ca680481cf0e5a1;hb=7724a64945c4f485780ed052de17793287e1935b;hpb=2701d3a832514ee94d110dfbd4f46f2ab6d9637e diff --git a/lib/whenproto.x b/lib/whenproto.x index 2ca662f..ff5edfb 100644 --- a/lib/whenproto.x +++ b/lib/whenproto.x @@ -21,12 +21,18 @@ * socket '$HOME/.whenjobs/socket'. The wire protocol is SunRPC. */ -/* Maximum length of a variable name and string value. */ +/* Maximum lengths and some useful typedefs. */ const MAX_VARIABLE_NAME_LENGTH = 256; const MAX_VARIABLE_VALUE_LENGTH = 65536; +const MAX_JOB_NAME_LENGTH = 256; +const MAX_BIG_INT_LENGTH = 64; /* when encoded as a string */ +const MAX_PATH_LENGTH = 4096; typedef string variable_name; typedef string string_value; +typedef string job_name; +typedef string string_big_int; +typedef string path; typedef variable_name variable_name_list<>; @@ -59,18 +65,43 @@ union variable switch (variable_type t) { case STRING_T: string_value s; case INT_T: - string i<64>; /* OCaml [big_int], as a string. */ + string_big_int i; /* OCaml [big_int], as a string. */ case FLOAT_T: - double f; /* C 'double' maps to an OCaml 'float' */ + double f; /* C 'double' maps to an OCaml 'float' */ }; +struct set_variable { + variable_name sv_name; + variable sv_value; +}; +typedef set_variable set_variable_list<>; + +struct job { + job_name job_name; + string_big_int job_serial; + path job_tmpdir; + hyper job_start_time; +}; + +typedef job job_list<>; + +typedef job_name job_name_list<>; + /* The API of the daemon. */ program When { version V1 { status reload_file (void) = 1; - status set_variable (variable_name, variable) = 2; + status set_variable (variable_name, variable) = 2; /* obsolete */ variable get_variable (variable_name) = 3; variable_name_list get_variable_names (void) = 4; status exit_daemon (void) = 5; + job_list get_jobs (void) = 6; + status cancel_job (string_big_int) = 7; + status start_job (job_name) = 8; + job get_job (string_big_int) = 9; + status set_variables (set_variable_list) = 10; + job_name_list get_job_names (void) = 11; + job_name_list test_variables (set_variable_list) = 12; + status ping_daemon (void) = 13; } = 1; } = 0x20008081;