object(this)
(** regex indicating that the script passes fds around *)
- val fd_regex = Str.regexp "^fd_"
+ val fd_regex = Str.regexp "fd_"
+
+ method is_fd_passer fname =
+ try let _ = Str.search_forward fd_regex fname 0
+ in
+ true
+ with
+ | Not_found -> false
+ | _ -> false
- method is_fd_passer fname = Str.string_match fd_regex fname 0
method get_slice_name () = slice_name
(** A new script was copied into the backend, make a corresponding entry in
the frontend.
begin
match res with
| Success ->
- Unixsocketwatcher.openentry root_dir fqp (abspath, slice_name)
+ ()
| _ ->
logprint "Could not create entry %s" abspath
end
let fqp = String.concat "/" [root_dir;rel] in
let fqp_in = String.concat "." [fqp;"in"] in
let fqp_out = String.concat "." [fqp;"out"] in
- Directfifowatcher.closeentry fqp;
- try
- Unix.unlink fqp_in;
- Unix.unlink fqp_out
- with _ ->
- logprint "Hm. %s disappeared. Looks like slice %s shot itself in the foot\n" fqp (this#get_slice_name ())
+ let fqp_control = String.concat "." [fqp;"out"] in
+
+ if (this#is_fd_passer rel) then
+ begin
+ Unixsocketwatcher.closeentry fqp;
+ try
+ Unix.unlink fqp_control
+ with _ ->
+ logprint "Hm. %s disappeared. Looks like slice %s shot itself in the foot\n" fqp (this#get_slice_name ())
+ end
+ else
+ begin
+ Directfifowatcher.closeentry fqp;
+ try
+ Unix.unlink fqp_in;
+ Unix.unlink fqp_out
+ with _ ->
+ logprint "Hm. %s disappeared. Looks like slice %s shot itself in the foot\n" fqp (this#get_slice_name ())
+ end
method rmdir rp =
match rp with Relpath(rel) ->