]> matita.cs.unibo.it Git - helm.git/commitdiff
added 'highlander' example to test fast rebinding of daemon's port
authorStefano Zacchiroli <zack@upsilon.cc>
Fri, 17 Jan 2003 14:48:09 +0000 (14:48 +0000)
committerStefano Zacchiroli <zack@upsilon.cc>
Fri, 17 Jan 2003 14:48:09 +0000 (14:48 +0000)
helm/DEVEL/ocaml-http/examples/Makefile
helm/DEVEL/ocaml-http/examples/highlander.ml [new file with mode: 0644]

index 6988880da658aac9c774e6c8c3aa1cbe09d0a6e4..7267301ebe2f007f2cbddbd8f3d43e99c0aa29c0 100644 (file)
@@ -7,7 +7,7 @@ EXAMPLES_FLAGS = -I .. -linkpkg
 
 EXAMPLES =     \
        always_ok_daemon webfsd obj_foo dump_args timeout dont_fork     \
-       threads chdir damned_recursion oo_daemon client_address
+       threads chdir damned_recursion oo_daemon client_address highlander
 
 all: $(EXAMPLES)
 opt: $(patsubst %,%.opt,$(EXAMPLES))
diff --git a/helm/DEVEL/ocaml-http/examples/highlander.ml b/helm/DEVEL/ocaml-http/examples/highlander.ml
new file mode 100644 (file)
index 0000000..b58d3a6
--- /dev/null
@@ -0,0 +1,54 @@
+
+(*
+  OCaml HTTP - do it yourself (fully OCaml) HTTP daemon
+
+  Copyright (C) <2002> Stefano Zacchiroli <zack@cs.unibo.it>
+
+  This program is free software; you can redistribute it and/or modify
+  it under the terms of the GNU General Public License as published by
+  the Free Software Foundation; either version 2 of the License, or
+  (at your option) any later version.
+
+  This program is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  GNU General Public License for more details.
+
+  You should have received a copy of the GNU General Public License
+  along with this program; if not, write to the Free Software
+  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+*)
+
+(* almost the same as dump_args.ml, but used to test fast rebinding of the same
+port *)
+
+open Printf;;
+
+let callback req outchan =
+  Http_daemon.send_basic_headers ~code:200 outchan;
+  Http_daemon.send_CRLF outchan;
+  let str = 
+    (sprintf "request path = %s\n"  req#path) ^
+    (sprintf "request GET params = %s\n"
+      (String.concat ";"
+        (List.map (fun (h,v) -> String.concat "=" [h;v]) req#params_GET))) ^
+    (sprintf "request POST params = %s\n"
+      (String.concat ";"
+        (List.map (fun (h,v) -> String.concat "=" [h;v]) req#params_POST))) ^
+    (sprintf "request ALL params = %s\n"
+      (String.concat ";"
+        (List.map (fun (h,v) -> String.concat "=" [h;v]) req#params))) ^
+    (sprintf "request BODY = '%s'\n" req#body)
+  in
+  output_string outchan str;
+  prerr_endline str
+in
+print_endline "Starting custom Http_daemon ...";
+flush stdout;
+(* Sys.catch_break true; *)
+while true do
+(*   try *)
+    Http_daemon.start' ~mode:`Single ~port:9999 callback
+(*   with Sys.Break -> prerr_endline "RESURRECTION!!!!" *)
+done
+