aboutsummaryrefslogtreecommitdiff
path: root/trunk/examples/ivyprobe.ml
diff options
context:
space:
mode:
authorhattenberger2013-03-27 13:17:19 +0000
committerhattenberger2013-03-27 13:17:19 +0000
commita17272283c803e13258e5dc6b19533c672ceee18 (patch)
tree0fa7737e21fe1147c860a84b18676cd99a80fdb1 /trunk/examples/ivyprobe.ml
parent003d66dc1fabc063372e4f03265935d0ccaefd78 (diff)
downloadivy-ocaml-a17272283c803e13258e5dc6b19533c672ceee18.zip
ivy-ocaml-a17272283c803e13258e5dc6b19533c672ceee18.tar.gz
ivy-ocaml-a17272283c803e13258e5dc6b19533c672ceee18.tar.bz2
ivy-ocaml-a17272283c803e13258e5dc6b19533c672ceee18.tar.xz
some fixes in ivy-ocaml tag 1.2
Diffstat (limited to 'trunk/examples/ivyprobe.ml')
-rw-r--r--trunk/examples/ivyprobe.ml40
1 files changed, 40 insertions, 0 deletions
diff --git a/trunk/examples/ivyprobe.ml b/trunk/examples/ivyprobe.ml
new file mode 100644
index 0000000..47bd2aa
--- /dev/null
+++ b/trunk/examples/ivyprobe.ml
@@ -0,0 +1,40 @@
+(* $Id$ *)
+
+let print_message app message =
+ Printf.printf "%s sent" (Ivy.name_of_client app);
+ Array.iter (fun s -> Printf.printf " '%s'" s) message;
+ print_newline ()
+
+let read = fun channel ->
+ let l = input_line channel in
+ Ivy.send l
+
+let watch_clients c e =
+ let dis = match e with Ivy.Connected -> "" | Ivy.Disconnected -> "dis" in
+ Printf.printf "%s %sconnected from %s\n"
+ (Ivy.name_of_client c)
+ dis
+ (Ivy.host_of_client c);
+ flush stdout
+
+let init = fun () ->
+ let regexp = ref ""
+ and name = ref "MLIVYPROBE"
+ and port = ref 2010
+ and domain = ref "127.255.255.255" in
+ Arg.parse
+ [ "-b", Arg.Int (fun x -> port := x), "<Port number>\tDefault is 2010, unused if IVYBUS is set";
+ "-domain", Arg.String (fun x -> domain := x), "<Network address>\tDefault is 127.255.255.255, unused if IVYBUS is set";
+ "-n", Arg.String (fun s -> name := s), "<Name of the prober>\tDefault is MLIVYPROBE"]
+ (fun s -> regexp := s)
+ "Usage: ";
+
+ let bus =
+ try Sys.getenv "IVYBUS" with
+ Not_found -> Printf.sprintf "%s:%d" !domain !port in
+ Ivy.init !name "READY" watch_clients;
+ Ivy.start bus;
+
+ Printf.printf "\nEnd of file to stop\n\n"; flush stdout;
+
+ ignore (Ivy.bind print_message !regexp)