(* This is the HTTP client example from the User's Manual *) open Uq_engines open Uq_engines.Operators class async_buffer b = object (self) inherit Netchannels.output_buffer b method can_output = true method request_notification (f : unit->bool) = () end ;; let main() = let ues = Unixqueue.create_unix_event_system() in let c = connector (`Socket(`Sock_inet_byname(Unix.SOCK_STREAM, "www.npc.de", 80), default_connect_options )) ues in let b = Buffer.create 10000 in let e = c ++ (fun connstat -> match connstat with | `Socket(fd, _) -> prerr_endline "CONNECTED"; (* debug output *) let d = `Polldescr(Netsys.get_fd_style fd, fd, ues) in Uq_io.output_string_e d "GET / HTTP/1.0\n\n" ++ (fun () -> Uq_io.write_eof_e d ++ (fun _ -> let buffer = new async_buffer b in new receiver ~src:fd ~dst:buffer ues ) ) | _ -> assert false ) in when_state ~is_done:(fun _ -> prerr_endline "HTTP RESPONSE RECEIVED!") ~is_error:(fun _ -> prerr_endline "ERROR!") e; Unixqueue.run ues; b ;;