fixed vsyssh
[vsys.git] / frontend.ml
index 77e5ffe..ab4f176 100644 (file)
@@ -1,18 +1,34 @@
+(* frontend.ml: Routines that implement frontend actions, such as creating directories in a slice, creating pipes etc. *)
+
 open Printf
 open Unix
 open Globals
 open Fifowatcher
 
+(** frontendhandler class: Methods to create and unlink pipes and directories 
+  @param root_dir vsys directory inside a slice
+  @param slice_name actual slice name - set with care, since the acl functionality refers to these names *)
 class frontendHandler (root_dir,slice_name) = 
 object(this)
   method get_slice_name () = slice_name
+
+  (** A new script was copied into the backend, make a corresponding entry in
+    the frontend.
+    @param rp Relative path of the entry in the backend
+    @param abspath Absolute path of the entry
+    @param perm Permissions of the entry at the frontend *)
   method mkentry (rp:relpath) abspath perm = 
             let realperm = perm land (lnot 0o111) in
     match rp with Relpath(rel) ->
       let fqp = String.concat "/" [root_dir;rel] in
-         Fifowatcher.mkentry fqp abspath realperm;
-         Fifowatcher.openentry fqp (abspath,slice_name) realperm
+      let res = Fifowatcher.mkentry fqp abspath realperm slice_name in
+        match res with 
+          | Success ->
+              Fifowatcher.openentry fqp (abspath,slice_name) realperm
+          | _ -> ()
 
+  (** A new directory was created at the backend, make a corresponding directory
+    at the frontend. Refer to mkentry for parameters *)
   method mkdir rp perm =
     match rp with Relpath(rel) ->
     let fqp = String.concat "/" [root_dir;rel] in
@@ -25,23 +41,28 @@ object(this)
                 end
               else if (s.st_perm <> perm) then
                 begin
-                        printf "Removing directory %s\n" fqp;
-                        flush Pervasives.stdout;
+                        fprintf logfd "Removing directory %s\n" fqp;
+                        flush logfd;
                         Unix.rmdir fqp;
                         Unix.mkdir fqp perm
                 end
       with Unix.Unix_error(_,_,_) ->
         Unix.mkdir fqp perm
 
+  (** Functions corresponding to file deletion/directory removal *)
+
+  (** *)
   method unlink rp =
     match rp with Relpath(rel) ->
-    let fqp1 = String.concat "/" [root_dir;rel;".in"] in
-    let fqp2 = String.concat "/" [root_dir;rel;".out"] in
+    let fqp1 = String.concat "/" [root_dir;rel] in
+    let fqp_in = String.concat "." [fqp1;"in"] in
+    let fqp2 = String.concat "/" [root_dir;rel] in
+    let fqp_out = String.concat "." [fqp2;"out"] in
       try 
-      Unix.unlink fqp1;
-      Unix.unlink fqp2
+        Unix.unlink fqp_in;
+        Unix.unlink fqp_out
       with _ ->
-        printf "Hm. %s disappeared. Never mind\n" fqp1;flush Pervasives.stdout
+        fprintf logfd "Hm. %s disappeared. Looks like slice %s shot itself in the foot\n" fqp1 (this#get_slice_name ());flush logfd
 
   method rmdir rp =
     match rp with Relpath(rel) ->
@@ -49,5 +70,5 @@ object(this)
       try
       Unix.rmdir fqp
       with _ ->
-        printf "Hm. %s disappeared. Never mind\n" fqp;flush Pervasives.stdout
+        fprintf logfd "Hm. %s disappeared. Looks like slice %s shot itself in the foot\n" fqp (this#get_slice_name ());flush logfd
 end