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;
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 *)
(** 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 *)
(** 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;