X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2FDEVEL%2Focaml-http%2Fhttp_tcp_server.ml;h=69da5c109ebd615364bea4e6b2c423a22e7e96a9;hb=b1fb6b8e1767d775bc452303629e95941d142bea;hp=33f06e8a0790cae1cd372d3a5410c4a2cc1c41b2;hpb=92a759539fe5c5a8ab50adfaafd0250271223a91;p=helm.git diff --git a/helm/DEVEL/ocaml-http/http_tcp_server.ml b/helm/DEVEL/ocaml-http/http_tcp_server.ml index 33f06e8a0..69da5c109 100644 --- a/helm/DEVEL/ocaml-http/http_tcp_server.ml +++ b/helm/DEVEL/ocaml-http/http_tcp_server.ml @@ -18,6 +18,21 @@ let wrap_callback_w_timeout ~callback ~timeout ~timeout_callback = ignore (Unix.alarm timeout); callback inchan outchan) +let init_socket sockaddr = + let suck = Unix.socket Unix.PF_INET Unix.SOCK_STREAM 0 in + Unix.setsockopt suck Unix.SO_REUSEADDR true; + Unix.bind suck sockaddr; + Unix.listen suck backlog; + suck + +let init_callback callback timeout = + let timeout_callback signo = + if signo = Sys.sigalrm then + raise Timeout + in + wrap_callback_w_timeout ~callback ~timeout ~timeout_callback + +(* let init_socket_and_callback sockaddr callback timeout = let suck = Unix.socket Unix.PF_INET Unix.SOCK_STREAM 0 in Unix.setsockopt suck Unix.SO_REUSEADDR true; @@ -29,6 +44,7 @@ let init_socket_and_callback sockaddr callback timeout = in let callback = wrap_callback_w_timeout ~callback ~timeout ~timeout_callback in (suck, callback) +*) (** tcp_server which use Unix.establish_server which in turn forks a child for each request *) @@ -44,7 +60,9 @@ let ocaml_builtin ~sockaddr ~timeout callback = (** tcp_server which doesn't fork, requests are server sequentially and in the same address space of the calling process *) let simple ~sockaddr ~timeout callback = - let (suck, callback) = init_socket_and_callback sockaddr callback timeout in +(* let (suck, callback) = init_socket_and_callback sockaddr callback timeout in *) + let suck = init_socket sockaddr in + let callback = init_callback callback timeout in while true do let (client, _) = Unix.accept suck in (* client is now connected *) @@ -60,7 +78,9 @@ let simple ~sockaddr ~timeout callback = (** tcp_server which creates a new thread for each request to be served *) let thread ~sockaddr ~timeout callback = - let (suck, callback) = init_socket_and_callback sockaddr callback timeout in +(* let (suck, callback) = init_socket_and_callback sockaddr callback timeout in *) + let suck = init_socket sockaddr in + let callback = init_callback callback timeout in let callback (i, o) = try callback i o;