git://git.onelab.eu
/
vsys.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Introduced direct-connected services, which offer pipe semantics.
[vsys.git]
/
dirwatcher.ml
diff --git
a/dirwatcher.ml
b/dirwatcher.ml
index
5bd4d6c
..
e43de77
100644
(file)
--- a/
dirwatcher.ml
+++ b/
dirwatcher.ml
@@
-1,3
+1,5
@@
+(** Watches directories for events. Agnostic to vsys semantics of backends and
+frontends *)
open Inotify
open Fdwatcher
open Printf
open Inotify
open Fdwatcher
open Printf
@@
-13,17
+15,24
@@
let fd = Inotify.init ()
let handle_dir_event dirname evlist str =
let fname = String.concat "/" [dirname;str] in
let handle_dir_event dirname evlist str =
let fname = String.concat "/" [dirname;str] in
-
printf
"File: %s. " fname;List.iter
+
fprintf logfd
"File: %s. " fname;List.iter
(fun e ->
(fun e ->
-
printf
"Event: %s\n" (string_of_event e))
+
fprintf logfd
"Event: %s\n" (string_of_event e))
evlist;
evlist;
- flush
Pervasives.stdout
+ flush
logfd
let add_watch dir events handler =
let add_watch dir events handler =
- printf "Adding watch for %s\n" dir;
+ printf "Adding watch for %s\n" dir;
flush Pervasives.stdout;
let wd = Inotify.add_watch fd dir events in
Hashtbl.add wdmap wd (dir,handler)
let wd = Inotify.add_watch fd dir events in
Hashtbl.add wdmap wd (dir,handler)
+ (* XXX
+let del_watch dir =
+ fprintf logfd "Removing watch for %s\n" dir;flush logfd;
+ let wd = Inotify.rm_watch fd dir in
+ Hashtbl.remove wdmap wd
+ *)
+
let asciiz s =
let rec findfirstnul str idx len =
if ((idx==len) ||
let asciiz s =
let rec findfirstnul str idx len =
if ((idx==len) ||
@@
-34,7
+43,7
@@
let asciiz s =
let nulterm = findfirstnul s 0 (String.length s) in
String.sub s 0 nulterm
let nulterm = findfirstnul s 0 (String.length s) in
String.sub s 0 nulterm
-let receive_event (eventdescriptor:f
d_and_fname) (bla:fd_and_fname
) =
+let receive_event (eventdescriptor:f
name_and_fd) (bla:fname_and_fd
) =
let (_,fd) = eventdescriptor in
let evs = Inotify.read fd in
List.iter (fun x->
let (_,fd) = eventdescriptor in
let evs = Inotify.read fd in
List.iter (fun x->
@@
-42,7
+51,7
@@
let receive_event (eventdescriptor:fd_and_fname) (bla:fd_and_fname) =
| (wd,evlist,_,Some(str)) ->
let purestr = asciiz(str) in
let (dirname,handler) =
| (wd,evlist,_,Some(str)) ->
let purestr = asciiz(str) in
let (dirname,handler) =
- try Hashtbl.find wdmap wd with Not_found->
printf
"Unknown watch descriptor\n";raise Not_found
+ try Hashtbl.find wdmap wd with Not_found->
fprintf logfd
"Unknown watch descriptor\n";raise Not_found
in
(
match handler with
in
(
match handler with