]> matita.cs.unibo.it Git - helm.git/commitdiff
- added OO example
authorStefano Zacchiroli <zack@upsilon.cc>
Fri, 6 Dec 2002 17:31:00 +0000 (17:31 +0000)
committerStefano Zacchiroli <zack@upsilon.cc>
Fri, 6 Dec 2002 17:31:00 +0000 (17:31 +0000)
helm/DEVEL/ocaml-http/examples/Makefile
helm/DEVEL/ocaml-http/examples/oo_daemon.ml [new file with mode: 0644]

index ed9c3b028260b0ad10d67617c363ecff0c850208..b6b416e975079b9ff52a32166767f2374c15b827 100644 (file)
@@ -7,23 +7,23 @@ EXAMPLES_FLAGS = -I .. -linkpkg
 
 EXAMPLES =     \
        always_ok_daemon webfsd obj_foo dump_args timeout dont_fork     \
-       threads chdir damned_recursion
+       threads chdir damned_recursion oo_daemon
 
 all: $(EXAMPLES)
 opt: $(patsubst %,%.opt,$(EXAMPLES))
-%: %.ml $(OBJS)
+%: %.ml $(OBJS_NON_MT)
        $(OCAMLC) $(EXAMPLES_FLAGS) $(OBJS_NON_MT) -o $@ $<
-%.opt: %.ml $(OBJS_OPT)
+%.opt: %.ml $(OBJS_NON_MT_OPT)
        $(OCAMLOPT) $(EXAMPLES_FLAGS) $(OBJS_NON_MT_OPT) -o $@ $<
 
-threads: threads.ml
+threads: threads.ml $(OBJS_MT)
        $(OCAMLC) $(EXAMPLES_FLAGS) $(OBJS_MT) $(THREADS_FLAGS) -o $@ $<
-threads.opt: threads.ml
+threads.opt: threads.ml $(OBJS_MT_OPT)
        $(OCAMLOPT) $(EXAMPLES_FLAGS) $(OBJS_MT_OPT) $(THREADS_FLAGS) -o $@ $<
 
-damned_recursion: damned_recursion.ml
+damned_recursion: damned_recursion.ml $(OBJS_MT)
        $(OCAMLC) $(EXAMPLES_FLAGS) $(OBJS_MT) $(THREADS_FLAGS) -package netclient -o $@ $<
-damned_recursion.opt: damned_recursion.ml
+damned_recursion.opt: damned_recursion.ml $(OBJS_MT_OPT)
        $(OCAMLOPT) $(EXAMPLES_FLAGS) $(OBJS_MT_OPT) $(THREADS_FLAGS) -package netclient -o $@ $<
 
 distclean: clean
diff --git a/helm/DEVEL/ocaml-http/examples/oo_daemon.ml b/helm/DEVEL/ocaml-http/examples/oo_daemon.ml
new file mode 100644 (file)
index 0000000..b73a2ac
--- /dev/null
@@ -0,0 +1,44 @@
+
+(*
+  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
+*)
+
+open Http_daemon;;
+open Http_response;;
+
+  (* the simple way *)
+let d = new daemon ~addr:"127.0.0.1" ~port:9999 () in
+while true do
+  let (req, conn) = d#getRequest in (* wait for valid request *)
+  conn#respond_with (new response ~body:"foo\n" ());
+  conn#close
+done
+
+(*
+  (* the hard way *)
+let d = new daemon ~addr:"127.0.0.1" ~port:9999 () in
+while true do
+  let conn = d#accept in (* wait for client connection *)
+  (match conn#getRequest with
+  | None -> ()  (* invalid request received *)
+  | Some req -> conn#respond_with (new response ~body:"foo\n" ()));
+  conn#close (* close socket *)
+done
+*)
+