hop-2012/ocamlmsg.ml

36 lines
1.1 KiB
OCaml
Raw Normal View History

2012-01-08 17:41:04 +00:00
open Unix
open Printf
open Thread
2012-03-03 23:04:52 +00:00
let rec accept_loop sock connection_start_fn =
2012-01-08 17:41:04 +00:00
let (s, peername) = accept sock in
2012-03-01 16:06:33 +00:00
setsockopt s TCP_NODELAY true;
2012-03-03 23:04:52 +00:00
ignore (connection_start_fn (s, peername));
accept_loop sock connection_start_fn
2012-01-08 17:41:04 +00:00
2012-03-03 23:04:52 +00:00
let start_net port_number connection_start_fn =
2012-01-08 17:41:04 +00:00
let sock = socket PF_INET SOCK_STREAM 0 in
setsockopt sock SO_REUSEADDR true;
bind sock (ADDR_INET (inet_addr_of_string "0.0.0.0", port_number));
listen sock 5;
2012-01-08 19:48:07 +00:00
Log.info "Accepting connections" [Sexp.Str (string_of_int port_number)];
2012-03-03 23:04:52 +00:00
accept_loop sock connection_start_fn
2012-01-08 17:41:04 +00:00
2012-01-08 19:48:07 +00:00
let hook_log () =
let old_hook = !Log.hook in
let new_hook label body =
ignore (Node.post "system.log" (Sexp.Str label) body (Sexp.Str ""));
old_hook label body
in
Log.hook := new_hook
2012-01-08 17:41:04 +00:00
let _ =
printf "%s %s, %s %s\n%!" App_info.product App_info.version App_info.copyright App_info.licence;
2012-01-08 19:02:18 +00:00
Sys.set_signal Sys.sigpipe Sys.Signal_ignore;
2012-01-08 17:41:04 +00:00
Uuid.init ();
Factory.init ();
Queuenode.init ();
2012-01-08 19:48:07 +00:00
hook_log ();
2012-03-03 23:04:52 +00:00
ignore (Util.create_thread "AMQP listener" None (start_net Amqp_spec.port) Amqp_relay.start);
start_net 5671 Relay.start