From 0cbaa203373c384c229cadad766e515f21f6d494 Mon Sep 17 00:00:00 2001 From: Stefano Zacchiroli Date: Fri, 6 Dec 2002 17:31:00 +0000 Subject: [PATCH] - added OO example --- helm/DEVEL/ocaml-http/examples/Makefile | 14 +++---- helm/DEVEL/ocaml-http/examples/oo_daemon.ml | 44 +++++++++++++++++++++ 2 files changed, 51 insertions(+), 7 deletions(-) create mode 100644 helm/DEVEL/ocaml-http/examples/oo_daemon.ml diff --git a/helm/DEVEL/ocaml-http/examples/Makefile b/helm/DEVEL/ocaml-http/examples/Makefile index ed9c3b028..b6b416e97 100644 --- a/helm/DEVEL/ocaml-http/examples/Makefile +++ b/helm/DEVEL/ocaml-http/examples/Makefile @@ -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 index 000000000..b73a2acd9 --- /dev/null +++ b/helm/DEVEL/ocaml-http/examples/oo_daemon.ml @@ -0,0 +1,44 @@ + +(* + OCaml HTTP - do it yourself (fully OCaml) HTTP daemon + + Copyright (C) <2002> Stefano Zacchiroli + + 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 +*) + -- 2.39.2