Change whenjobs --set syntax (NOTE: breaks compatibility).
[whenjobs.git] / lib / whenproto.x
index 2ca662f..a1407fb 100644 (file)
  * 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<MAX_VARIABLE_NAME_LENGTH>;
 typedef string string_value<MAX_VARIABLE_VALUE_LENGTH>;
+typedef string job_name<MAX_JOB_NAME_LENGTH>;
+typedef string string_big_int<MAX_BIG_INT_LENGTH>;
+typedef string path<MAX_PATH_LENGTH>;
 
 typedef variable_name variable_name_list<>;
 
@@ -59,18 +65,38 @@ 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<>;
+
 /* 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;
   } = 1;
 } = 0x20008081;