<html><head> <link rel="stylesheet" href="style.css" type="text/css"> <meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type"> <link rel="Start" href="index.html"> <link title="Index of types" rel=Appendix href="index_types.html"> <link title="Index of exceptions" rel=Appendix href="index_exceptions.html"> <link title="Index of values" rel=Appendix href="index_values.html"> <link title="Index of class attributes" rel=Appendix href="index_attributes.html"> <link title="Index of class methods" rel=Appendix href="index_methods.html"> <link title="Index of classes" rel=Appendix href="index_classes.html"> <link title="Index of class types" rel=Appendix href="index_class_types.html"> <link title="Index of modules" rel=Appendix href="index_modules.html"> <link title="Index of module types" rel=Appendix href="index_module_types.html"> <link title="Uq_gtk" rel="Chapter" href="Uq_gtk.html"> <link title="Equeue" rel="Chapter" href="Equeue.html"> <link title="Unixqueue" rel="Chapter" href="Unixqueue.html"> <link title="Uq_engines" rel="Chapter" href="Uq_engines.html"> <link title="Uq_socks5" rel="Chapter" href="Uq_socks5.html"> <link title="Unixqueue_mt" rel="Chapter" href="Unixqueue_mt.html"> <link title="Equeue_intro" rel="Chapter" href="Equeue_intro.html"> <link title="Uq_ssl" rel="Chapter" href="Uq_ssl.html"> <link title="Uq_tcl" rel="Chapter" href="Uq_tcl.html"> <link title="Netcgi_common" rel="Chapter" href="Netcgi_common.html"> <link title="Netcgi" rel="Chapter" href="Netcgi.html"> <link title="Netcgi_ajp" rel="Chapter" href="Netcgi_ajp.html"> <link title="Netcgi_scgi" rel="Chapter" href="Netcgi_scgi.html"> <link title="Netcgi_cgi" rel="Chapter" href="Netcgi_cgi.html"> <link title="Netcgi_fcgi" rel="Chapter" href="Netcgi_fcgi.html"> <link title="Netcgi_dbi" rel="Chapter" href="Netcgi_dbi.html"> <link title="Netcgi1_compat" rel="Chapter" href="Netcgi1_compat.html"> <link title="Netcgi_test" rel="Chapter" href="Netcgi_test.html"> <link title="Netcgi_porting" rel="Chapter" href="Netcgi_porting.html"> <link title="Netcgi_plex" rel="Chapter" href="Netcgi_plex.html"> <link title="Http_client" rel="Chapter" href="Http_client.html"> <link title="Telnet_client" rel="Chapter" href="Telnet_client.html"> <link title="Ftp_data_endpoint" rel="Chapter" href="Ftp_data_endpoint.html"> <link title="Ftp_client" rel="Chapter" href="Ftp_client.html"> <link title="Nethttpd_types" rel="Chapter" href="Nethttpd_types.html"> <link title="Nethttpd_kernel" rel="Chapter" href="Nethttpd_kernel.html"> <link title="Nethttpd_reactor" rel="Chapter" href="Nethttpd_reactor.html"> <link title="Nethttpd_engine" rel="Chapter" href="Nethttpd_engine.html"> <link title="Nethttpd_services" rel="Chapter" href="Nethttpd_services.html"> <link title="Nethttpd_plex" rel="Chapter" href="Nethttpd_plex.html"> <link title="Nethttpd_intro" rel="Chapter" href="Nethttpd_intro.html"> <link title="Netplex_types" rel="Chapter" href="Netplex_types.html"> <link title="Netplex_mp" rel="Chapter" href="Netplex_mp.html"> <link title="Netplex_mt" rel="Chapter" href="Netplex_mt.html"> <link title="Netplex_log" rel="Chapter" href="Netplex_log.html"> <link title="Netplex_controller" rel="Chapter" href="Netplex_controller.html"> <link title="Netplex_container" rel="Chapter" href="Netplex_container.html"> <link title="Netplex_sockserv" rel="Chapter" href="Netplex_sockserv.html"> <link title="Netplex_workload" rel="Chapter" href="Netplex_workload.html"> <link title="Netplex_main" rel="Chapter" href="Netplex_main.html"> <link title="Netplex_config" rel="Chapter" href="Netplex_config.html"> <link title="Netplex_kit" rel="Chapter" href="Netplex_kit.html"> <link title="Rpc_netplex" rel="Chapter" href="Rpc_netplex.html"> <link title="Netplex_cenv" rel="Chapter" href="Netplex_cenv.html"> <link title="Netplex_intro" rel="Chapter" href="Netplex_intro.html"> <link title="Netshm" rel="Chapter" href="Netshm.html"> <link title="Netshm_data" rel="Chapter" href="Netshm_data.html"> <link title="Netshm_hashtbl" rel="Chapter" href="Netshm_hashtbl.html"> <link title="Netshm_array" rel="Chapter" href="Netshm_array.html"> <link title="Netshm_intro" rel="Chapter" href="Netshm_intro.html"> <link title="Netconversion" rel="Chapter" href="Netconversion.html"> <link title="Netchannels" rel="Chapter" href="Netchannels.html"> <link title="Netstream" rel="Chapter" href="Netstream.html"> <link title="Mimestring" rel="Chapter" href="Mimestring.html"> <link title="Netmime" rel="Chapter" href="Netmime.html"> <link title="Netsendmail" rel="Chapter" href="Netsendmail.html"> <link title="Neturl" rel="Chapter" href="Neturl.html"> <link title="Netaddress" rel="Chapter" href="Netaddress.html"> <link title="Netbuffer" rel="Chapter" href="Netbuffer.html"> <link title="Netdate" rel="Chapter" href="Netdate.html"> <link title="Netencoding" rel="Chapter" href="Netencoding.html"> <link title="Netulex" rel="Chapter" href="Netulex.html"> <link title="Netaccel" rel="Chapter" href="Netaccel.html"> <link title="Netaccel_link" rel="Chapter" href="Netaccel_link.html"> <link title="Nethtml" rel="Chapter" href="Nethtml.html"> <link title="Netstring_str" rel="Chapter" href="Netstring_str.html"> <link title="Netstring_pcre" rel="Chapter" href="Netstring_pcre.html"> <link title="Netstring_mt" rel="Chapter" href="Netstring_mt.html"> <link title="Netmappings" rel="Chapter" href="Netmappings.html"> <link title="Netaux" rel="Chapter" href="Netaux.html"> <link title="Nethttp" rel="Chapter" href="Nethttp.html"> <link title="Netchannels_tut" rel="Chapter" href="Netchannels_tut.html"> <link title="Netmime_tut" rel="Chapter" href="Netmime_tut.html"> <link title="Netsendmail_tut" rel="Chapter" href="Netsendmail_tut.html"> <link title="Netulex_tut" rel="Chapter" href="Netulex_tut.html"> <link title="Neturl_tut" rel="Chapter" href="Neturl_tut.html"> <link title="Netsys" rel="Chapter" href="Netsys.html"> <link title="Netpop" rel="Chapter" href="Netpop.html"> <link title="Rpc_auth_dh" rel="Chapter" href="Rpc_auth_dh.html"> <link title="Rpc_key_service" rel="Chapter" href="Rpc_key_service.html"> <link title="Rpc_time" rel="Chapter" href="Rpc_time.html"> <link title="Rpc_auth_local" rel="Chapter" href="Rpc_auth_local.html"> <link title="Rtypes" rel="Chapter" href="Rtypes.html"> <link title="Xdr" rel="Chapter" href="Xdr.html"> <link title="Rpc" rel="Chapter" href="Rpc.html"> <link title="Rpc_program" rel="Chapter" href="Rpc_program.html"> <link title="Rpc_portmapper_aux" rel="Chapter" href="Rpc_portmapper_aux.html"> <link title="Rpc_packer" rel="Chapter" href="Rpc_packer.html"> <link title="Rpc_transport" rel="Chapter" href="Rpc_transport.html"> <link title="Rpc_client" rel="Chapter" href="Rpc_client.html"> <link title="Rpc_simple_client" rel="Chapter" href="Rpc_simple_client.html"> <link title="Rpc_portmapper_clnt" rel="Chapter" href="Rpc_portmapper_clnt.html"> <link title="Rpc_portmapper" rel="Chapter" href="Rpc_portmapper.html"> <link title="Rpc_server" rel="Chapter" href="Rpc_server.html"> <link title="Rpc_auth_sys" rel="Chapter" href="Rpc_auth_sys.html"> <link title="Rpc_intro" rel="Chapter" href="Rpc_intro.html"> <link title="Rpc_mapping_ref" rel="Chapter" href="Rpc_mapping_ref.html"> <link title="Rpc_ssl" rel="Chapter" href="Rpc_ssl.html"> <link title="Rpc_xti_client" rel="Chapter" href="Rpc_xti_client.html"> <link title="Shell_sys" rel="Chapter" href="Shell_sys.html"> <link title="Shell" rel="Chapter" href="Shell.html"> <link title="Shell_uq" rel="Chapter" href="Shell_uq.html"> <link title="Shell_mt" rel="Chapter" href="Shell_mt.html"> <link title="Shell_intro" rel="Chapter" href="Shell_intro.html"> <link title="Netsmtp" rel="Chapter" href="Netsmtp.html"><title>Ocamlnet 2 Reference Manual : Uq_engines</title> </head> <body> <code class="code"><span class="keyword">sig</span><br> <span class="keyword">exception</span> <span class="constructor">Closed_channel</span><br> <span class="keyword">exception</span> <span class="constructor">Broken_communication</span><br> <span class="keyword">exception</span> <span class="constructor">Watchdog_timeout</span><br> <span class="keyword">exception</span> <span class="constructor">Addressing_method_not_supported</span><br> <span class="keyword">exception</span> <span class="constructor">Cancelled</span><br> <span class="keyword">type</span> <span class="keywordsign">'</span>a engine_state =<br> [ <span class="keywordsign">`</span><span class="constructor">Aborted</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">Done</span> <span class="keyword">of</span> <span class="keywordsign">'</span>a <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">Error</span> <span class="keyword">of</span> exn <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">Working</span> <span class="keyword">of</span> int ]<br> <span class="keyword">class</span> <span class="keyword">type</span> [<span class="keywordsign">'</span>a] engine =<br> <span class="keyword">object</span><br> <span class="keyword">method</span> abort : unit <span class="keywordsign">-></span> unit<br> <span class="keyword">method</span> event_system : <span class="constructor">Unixqueue</span>.event_system<br> <span class="keyword">method</span> request_notification : (unit <span class="keywordsign">-></span> bool) <span class="keywordsign">-></span> unit<br> <span class="keyword">method</span> state : <span class="keywordsign">'</span>a <span class="constructor">Uq_engines</span>.engine_state<br> <span class="keyword">end</span><br> <span class="keyword">val</span> when_state :<br> ?is_done:(<span class="keywordsign">'</span>a <span class="keywordsign">-></span> unit) <span class="keywordsign">-></span><br> ?is_error:(exn <span class="keywordsign">-></span> unit) <span class="keywordsign">-></span><br> ?is_aborted:(unit <span class="keywordsign">-></span> unit) <span class="keywordsign">-></span> <span class="keywordsign">'</span>a <span class="keywordsign">#</span><span class="constructor">Uq_engines</span>.engine <span class="keywordsign">-></span> unit<br> <span class="keyword">class</span> [<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>b] map_engine :<br> map_done:(<span class="keywordsign">'</span>a <span class="keywordsign">-></span> <span class="keywordsign">'</span>b <span class="constructor">Uq_engines</span>.engine_state) <span class="keywordsign">-></span><br> ?map_error:(exn <span class="keywordsign">-></span> <span class="keywordsign">'</span>b <span class="constructor">Uq_engines</span>.engine_state) <span class="keywordsign">-></span><br> ?map_aborted:(unit <span class="keywordsign">-></span> <span class="keywordsign">'</span>b <span class="constructor">Uq_engines</span>.engine_state) <span class="keywordsign">-></span><br> <span class="keywordsign">'</span>a <span class="keywordsign">#</span><span class="constructor">Uq_engines</span>.engine <span class="keywordsign">-></span> [<span class="keywordsign">'</span>b] engine<br> <span class="keyword">class</span> [<span class="keywordsign">'</span>a] epsilon_engine :<br> <span class="keywordsign">'</span>a <span class="constructor">Uq_engines</span>.engine_state <span class="keywordsign">-></span> <span class="constructor">Unixqueue</span>.event_system <span class="keywordsign">-></span> [<span class="keywordsign">'</span>a] engine<br> <span class="keyword">class</span> [<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>b] seq_engine :<br> <span class="keywordsign">'</span>a <span class="keywordsign">#</span><span class="constructor">Uq_engines</span>.engine <span class="keywordsign">-></span> (<span class="keywordsign">'</span>a <span class="keywordsign">-></span> <span class="keywordsign">'</span>b <span class="keywordsign">#</span><span class="constructor">Uq_engines</span>.engine) <span class="keywordsign">-></span> [<span class="keywordsign">'</span>b] engine<br> <span class="keyword">class</span> [<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>b] sync_engine :<br> <span class="keywordsign">'</span>a <span class="keywordsign">#</span><span class="constructor">Uq_engines</span>.engine <span class="keywordsign">-></span> <span class="keywordsign">'</span>b <span class="keywordsign">#</span><span class="constructor">Uq_engines</span>.engine <span class="keywordsign">-></span> [<span class="keywordsign">'</span>a * <span class="keywordsign">'</span>b] engine<br> <span class="keyword">class</span> poll_engine :<br> ?extra_match:(exn <span class="keywordsign">-></span> bool) <span class="keywordsign">-></span><br> (<span class="constructor">Unixqueue</span>.operation * float) list <span class="keywordsign">-></span><br> <span class="constructor">Unixqueue</span>.event_system <span class="keywordsign">-></span><br> <span class="keyword">object</span><br> <span class="keyword">method</span> abort : unit <span class="keywordsign">-></span> unit<br> <span class="keyword">method</span> event_system : <span class="constructor">Unixqueue</span>.event_system<br> <span class="keyword">method</span> group : <span class="constructor">Unixqueue</span>.group<br> <span class="keyword">method</span> request_notification : (unit <span class="keywordsign">-></span> bool) <span class="keywordsign">-></span> unit<br> <span class="keyword">method</span> restart : unit <span class="keywordsign">-></span> unit<br> <span class="keyword">method</span> state : <span class="constructor">Unixqueue</span>.event engine_state<br> <span class="keyword">end</span><br> <span class="keyword">class</span> poll_process_engine :<br> ?period:float <span class="keywordsign">-></span><br> pid:int <span class="keywordsign">-></span> <span class="constructor">Unixqueue</span>.event_system <span class="keywordsign">-></span> [<span class="constructor">Unix</span>.process_status] engine<br> <span class="keyword">class</span> watchdog : float <span class="keywordsign">-></span> <span class="keywordsign">'</span>a <span class="keywordsign">#</span><span class="constructor">Uq_engines</span>.engine <span class="keywordsign">-></span> [unit] engine<br> <span class="keyword">class</span> [<span class="keywordsign">'</span>a] engine_mixin :<br> <span class="keywordsign">'</span>a <span class="constructor">Uq_engines</span>.engine_state <span class="keywordsign">-></span><br> <span class="keyword">object</span><br> <span class="keyword">method</span> <span class="keyword">private</span> notify : unit <span class="keywordsign">-></span> unit<br> <span class="keyword">method</span> request_notification : (unit <span class="keywordsign">-></span> bool) <span class="keywordsign">-></span> unit<br> <span class="keyword">method</span> <span class="keyword">private</span> set_state : <span class="keywordsign">'</span>a <span class="constructor">Uq_engines</span>.engine_state <span class="keywordsign">-></span> unit<br> <span class="keyword">method</span> state : <span class="keywordsign">'</span>a <span class="constructor">Uq_engines</span>.engine_state<br> <span class="keyword">end</span><br> <span class="keyword">class</span> <span class="keyword">type</span> async_out_channel =<br> <span class="keyword">object</span><br> <span class="keyword">method</span> can_output : bool<br> <span class="keyword">method</span> close_out : unit <span class="keywordsign">-></span> unit<br> <span class="keyword">method</span> flush : unit <span class="keywordsign">-></span> unit<br> <span class="keyword">method</span> output : string <span class="keywordsign">-></span> int <span class="keywordsign">-></span> int <span class="keywordsign">-></span> int<br> <span class="keyword">method</span> pos_out : int<br> <span class="keyword">method</span> request_notification : (unit <span class="keywordsign">-></span> bool) <span class="keywordsign">-></span> unit<br> <span class="keyword">end</span><br> <span class="keyword">class</span> <span class="keyword">type</span> async_in_channel =<br> <span class="keyword">object</span><br> <span class="keyword">method</span> can_input : bool<br> <span class="keyword">method</span> close_in : unit <span class="keywordsign">-></span> unit<br> <span class="keyword">method</span> input : string <span class="keywordsign">-></span> int <span class="keywordsign">-></span> int <span class="keywordsign">-></span> int<br> <span class="keyword">method</span> pos_in : int<br> <span class="keyword">method</span> request_notification : (unit <span class="keywordsign">-></span> bool) <span class="keywordsign">-></span> unit<br> <span class="keyword">end</span><br> <span class="keyword">class</span> receiver :<br> src:<span class="constructor">Unix</span>.file_descr <span class="keywordsign">-></span><br> dst:<span class="keywordsign">#</span><span class="constructor">Uq_engines</span>.async_out_channel <span class="keywordsign">-></span><br> ?close_src:bool <span class="keywordsign">-></span><br> ?close_dst:bool <span class="keywordsign">-></span> <span class="constructor">Unixqueue</span>.event_system <span class="keywordsign">-></span> [unit] engine<br> <span class="keyword">class</span> sender :<br> src:<span class="keywordsign">#</span><span class="constructor">Uq_engines</span>.async_in_channel <span class="keywordsign">-></span><br> dst:<span class="constructor">Unix</span>.file_descr <span class="keywordsign">-></span><br> ?close_src:bool <span class="keywordsign">-></span><br> ?close_dst:bool <span class="keywordsign">-></span> <span class="constructor">Unixqueue</span>.event_system <span class="keywordsign">-></span> [unit] engine<br> <span class="keyword">class</span> <span class="keyword">type</span> async_out_channel_engine =<br> <span class="keyword">object</span><br> <span class="keyword">method</span> abort : unit <span class="keywordsign">-></span> unit<br> <span class="keyword">method</span> can_output : bool<br> <span class="keyword">method</span> close_out : unit <span class="keywordsign">-></span> unit<br> <span class="keyword">method</span> event_system : <span class="constructor">Unixqueue</span>.event_system<br> <span class="keyword">method</span> flush : unit <span class="keywordsign">-></span> unit<br> <span class="keyword">method</span> output : string <span class="keywordsign">-></span> int <span class="keywordsign">-></span> int <span class="keywordsign">-></span> int<br> <span class="keyword">method</span> pos_out : int<br> <span class="keyword">method</span> request_notification : (unit <span class="keywordsign">-></span> bool) <span class="keywordsign">-></span> unit<br> <span class="keyword">method</span> state : unit engine_state<br> <span class="keyword">end</span><br> <span class="keyword">class</span> <span class="keyword">type</span> async_in_channel_engine =<br> <span class="keyword">object</span><br> <span class="keyword">method</span> abort : unit <span class="keywordsign">-></span> unit<br> <span class="keyword">method</span> can_input : bool<br> <span class="keyword">method</span> close_in : unit <span class="keywordsign">-></span> unit<br> <span class="keyword">method</span> event_system : <span class="constructor">Unixqueue</span>.event_system<br> <span class="keyword">method</span> input : string <span class="keywordsign">-></span> int <span class="keywordsign">-></span> int <span class="keywordsign">-></span> int<br> <span class="keyword">method</span> pos_in : int<br> <span class="keyword">method</span> request_notification : (unit <span class="keywordsign">-></span> bool) <span class="keywordsign">-></span> unit<br> <span class="keyword">method</span> state : unit engine_state<br> <span class="keyword">end</span><br> <span class="keyword">class</span> output_async_descr :<br> dst:<span class="constructor">Unix</span>.file_descr <span class="keywordsign">-></span><br> ?buffer_size:int <span class="keywordsign">-></span><br> ?close_dst:bool <span class="keywordsign">-></span> <span class="constructor">Unixqueue</span>.event_system <span class="keywordsign">-></span> async_out_channel_engine<br> <span class="keyword">class</span> input_async_descr :<br> src:<span class="constructor">Unix</span>.file_descr <span class="keywordsign">-></span><br> ?buffer_size:int <span class="keywordsign">-></span><br> ?close_src:bool <span class="keywordsign">-></span> <span class="constructor">Unixqueue</span>.event_system <span class="keywordsign">-></span> async_in_channel_engine<br> <span class="keyword">type</span> copy_task =<br> [ <span class="keywordsign">`</span><span class="constructor">Bidirectional</span> <span class="keyword">of</span> <span class="constructor">Unix</span>.file_descr * <span class="constructor">Unix</span>.file_descr<br> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">Tridirectional</span> <span class="keyword">of</span><br> <span class="constructor">Unix</span>.file_descr * <span class="constructor">Unix</span>.file_descr * <span class="constructor">Unix</span>.file_descr<br> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">Uni_socket</span> <span class="keyword">of</span> <span class="constructor">Unix</span>.file_descr * <span class="constructor">Unix</span>.file_descr<br> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">Unidirectional</span> <span class="keyword">of</span> <span class="constructor">Unix</span>.file_descr * <span class="constructor">Unix</span>.file_descr ]<br> <span class="keyword">class</span> copier :<br> <span class="constructor">Uq_engines</span>.copy_task <span class="keywordsign">-></span> <span class="constructor">Unixqueue</span>.event_system <span class="keywordsign">-></span> [unit] engine<br> <span class="keyword">type</span> sockspec =<br> [ <span class="keywordsign">`</span><span class="constructor">Sock_inet</span> <span class="keyword">of</span> <span class="constructor">Unix</span>.socket_type * <span class="constructor">Unix</span>.inet_addr * int<br> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">Sock_inet_byname</span> <span class="keyword">of</span> <span class="constructor">Unix</span>.socket_type * string * int<br> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">Sock_unix</span> <span class="keyword">of</span> <span class="constructor">Unix</span>.socket_type * string ]<br> <span class="keyword">type</span> connect_address =<br> [ <span class="keywordsign">`</span><span class="constructor">Command</span> <span class="keyword">of</span> string * (int <span class="keywordsign">-></span> <span class="constructor">Unixqueue</span>.event_system <span class="keywordsign">-></span> unit)<br> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">Socket</span> <span class="keyword">of</span> <span class="constructor">Uq_engines</span>.sockspec * <span class="constructor">Uq_engines</span>.connect_options ]<br> <span class="keyword">and</span> connect_options = { conn_bind : <span class="constructor">Uq_engines</span>.sockspec option; }<br> <span class="keyword">val</span> default_connect_options : <span class="constructor">Uq_engines</span>.connect_options<br> <span class="keyword">type</span> connect_status =<br> [ <span class="keywordsign">`</span><span class="constructor">Command</span> <span class="keyword">of</span> <span class="constructor">Unix</span>.file_descr * int<br> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">Socket</span> <span class="keyword">of</span> <span class="constructor">Unix</span>.file_descr * <span class="constructor">Uq_engines</span>.sockspec ]<br> <span class="keyword">val</span> client_socket : <span class="constructor">Uq_engines</span>.connect_status <span class="keywordsign">-></span> <span class="constructor">Unix</span>.file_descr<br> <span class="keyword">type</span> listen_address =<br> [ <span class="keywordsign">`</span><span class="constructor">Socket</span> <span class="keyword">of</span> <span class="constructor">Uq_engines</span>.sockspec * <span class="constructor">Uq_engines</span>.listen_options ]<br> <span class="keyword">and</span> listen_options = { lstn_backlog : int; lstn_reuseaddr : bool; }<br> <span class="keyword">val</span> default_listen_options : <span class="constructor">Uq_engines</span>.listen_options<br> <span class="keyword">class</span> <span class="keyword">type</span> client_socket_connector =<br> <span class="keyword">object</span><br> <span class="keyword">method</span> connect :<br> <span class="constructor">Uq_engines</span>.connect_address <span class="keywordsign">-></span><br> <span class="constructor">Unixqueue</span>.event_system <span class="keywordsign">-></span> <span class="constructor">Uq_engines</span>.connect_status <span class="constructor">Uq_engines</span>.engine<br> <span class="keyword">end</span><br> <span class="keyword">class</span> <span class="keyword">type</span> server_socket_acceptor =<br> <span class="keyword">object</span><br> <span class="keyword">method</span> accept :<br> unit <span class="keywordsign">-></span> (<span class="constructor">Unix</span>.file_descr * <span class="constructor">Uq_engines</span>.sockspec) <span class="constructor">Uq_engines</span>.engine<br> <span class="keyword">method</span> multiple_connections : bool<br> <span class="keyword">method</span> server_address : <span class="constructor">Uq_engines</span>.sockspec<br> <span class="keyword">method</span> shut_down : unit <span class="keywordsign">-></span> unit<br> <span class="keyword">end</span><br> <span class="keyword">class</span> direct_socket_acceptor :<br> <span class="constructor">Unix</span>.file_descr <span class="keywordsign">-></span> <span class="constructor">Unixqueue</span>.event_system <span class="keywordsign">-></span> server_socket_acceptor<br> <span class="keyword">class</span> <span class="keyword">type</span> server_socket_listener =<br> <span class="keyword">object</span><br> <span class="keyword">method</span> listen :<br> <span class="constructor">Uq_engines</span>.listen_address <span class="keywordsign">-></span><br> <span class="constructor">Unixqueue</span>.event_system <span class="keywordsign">-></span><br> <span class="constructor">Uq_engines</span>.server_socket_acceptor <span class="constructor">Uq_engines</span>.engine<br> <span class="keyword">end</span><br> <span class="keyword">val</span> connector :<br> ?proxy:<span class="keywordsign">#</span><span class="constructor">Uq_engines</span>.client_socket_connector <span class="keywordsign">-></span><br> <span class="constructor">Uq_engines</span>.connect_address <span class="keywordsign">-></span><br> <span class="constructor">Unixqueue</span>.event_system <span class="keywordsign">-></span> <span class="constructor">Uq_engines</span>.connect_status <span class="constructor">Uq_engines</span>.engine<br> <span class="keyword">val</span> listener :<br> ?proxy:<span class="keywordsign">#</span><span class="constructor">Uq_engines</span>.server_socket_listener <span class="keywordsign">-></span><br> <span class="constructor">Uq_engines</span>.listen_address <span class="keywordsign">-></span><br> <span class="constructor">Unixqueue</span>.event_system <span class="keywordsign">-></span><br> <span class="constructor">Uq_engines</span>.server_socket_acceptor <span class="constructor">Uq_engines</span>.engine<br> <span class="keyword">type</span> datagram_type = [ <span class="keywordsign">`</span><span class="constructor">Inet_udp</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">Unix_dgram</span> ]<br> <span class="keyword">class</span> <span class="keyword">type</span> wrapped_datagram_socket =<br> <span class="keyword">object</span><br> <span class="keyword">method</span> datagram_type : <span class="constructor">Uq_engines</span>.datagram_type<br> <span class="keyword">method</span> descriptor : <span class="constructor">Unix</span>.file_descr<br> <span class="keyword">method</span> recvfrom :<br> string <span class="keywordsign">-></span><br> int <span class="keywordsign">-></span> int <span class="keywordsign">-></span> <span class="constructor">Unix</span>.msg_flag list <span class="keywordsign">-></span> int * <span class="constructor">Uq_engines</span>.sockspec<br> <span class="keyword">method</span> sendto :<br> string <span class="keywordsign">-></span><br> int <span class="keywordsign">-></span> int <span class="keywordsign">-></span> <span class="constructor">Unix</span>.msg_flag list <span class="keywordsign">-></span> <span class="constructor">Uq_engines</span>.sockspec <span class="keywordsign">-></span> int<br> <span class="keyword">method</span> shut_down : unit <span class="keywordsign">-></span> unit<br> <span class="keyword">method</span> socket_domain : <span class="constructor">Unix</span>.socket_domain<br> <span class="keyword">method</span> socket_protocol : int<br> <span class="keyword">method</span> socket_type : <span class="constructor">Unix</span>.socket_type<br> <span class="keyword">end</span><br> <span class="keyword">class</span> <span class="keyword">type</span> datagram_socket_provider =<br> <span class="keyword">object</span><br> <span class="keyword">method</span> create_datagram_socket :<br> <span class="constructor">Uq_engines</span>.datagram_type <span class="keywordsign">-></span><br> <span class="constructor">Unixqueue</span>.event_system <span class="keywordsign">-></span><br> <span class="constructor">Uq_engines</span>.wrapped_datagram_socket <span class="constructor">Uq_engines</span>.engine<br> <span class="keyword">end</span><br> <span class="keyword">val</span> datagram_provider :<br> ?proxy:<span class="keywordsign">#</span><span class="constructor">Uq_engines</span>.datagram_socket_provider <span class="keywordsign">-></span><br> <span class="constructor">Uq_engines</span>.datagram_type <span class="keywordsign">-></span><br> <span class="constructor">Unixqueue</span>.event_system <span class="keywordsign">-></span><br> <span class="constructor">Uq_engines</span>.wrapped_datagram_socket <span class="constructor">Uq_engines</span>.engine<br> <span class="keyword">class</span> <span class="keyword">type</span> multiplex_controller =<br> <span class="keyword">object</span><br> <span class="keyword">method</span> alive : bool<br> <span class="keyword">method</span> cancel_reading : unit <span class="keywordsign">-></span> unit<br> <span class="keyword">method</span> cancel_shutting_down : unit <span class="keywordsign">-></span> unit<br> <span class="keyword">method</span> cancel_writing : unit <span class="keywordsign">-></span> unit<br> <span class="keyword">method</span> event_system : <span class="constructor">Unixqueue</span>.event_system<br> <span class="keyword">method</span> inactivate : unit <span class="keywordsign">-></span> unit<br> <span class="keyword">method</span> read_eof : bool<br> <span class="keyword">method</span> reading : bool<br> <span class="keyword">method</span> shutting_down : bool<br> <span class="keyword">method</span> start_reading :<br> ?peek:(unit <span class="keywordsign">-></span> unit) <span class="keywordsign">-></span><br> when_done:(exn option <span class="keywordsign">-></span> int <span class="keywordsign">-></span> unit) <span class="keywordsign">-></span> string <span class="keywordsign">-></span> int <span class="keywordsign">-></span> int <span class="keywordsign">-></span> unit<br> <span class="keyword">method</span> start_shutting_down :<br> ?linger:float <span class="keywordsign">-></span> when_done:(exn option <span class="keywordsign">-></span> unit) <span class="keywordsign">-></span> unit <span class="keywordsign">-></span> unit<br> <span class="keyword">method</span> start_writing :<br> when_done:(exn option <span class="keywordsign">-></span> int <span class="keywordsign">-></span> unit) <span class="keywordsign">-></span> string <span class="keywordsign">-></span> int <span class="keywordsign">-></span> int <span class="keywordsign">-></span> unit<br> <span class="keyword">method</span> start_writing_eof :<br> when_done:(exn option <span class="keywordsign">-></span> unit) <span class="keywordsign">-></span> unit <span class="keywordsign">-></span> unit<br> <span class="keyword">method</span> supports_half_open_connection : bool<br> <span class="keyword">method</span> writing : bool<br> <span class="keyword">method</span> wrote_eof : bool<br> <span class="keyword">end</span><br> <span class="keyword">val</span> create_multiplex_controller_for_connected_socket :<br> ?close_inactive_descr:bool <span class="keywordsign">-></span><br> ?supports_half_open_connection:bool <span class="keywordsign">-></span><br> <span class="constructor">Unix</span>.file_descr <span class="keywordsign">-></span><br> <span class="constructor">Unixqueue</span>.unix_event_system <span class="keywordsign">-></span> <span class="constructor">Uq_engines</span>.multiplex_controller<br> <span class="keyword">class</span> <span class="keyword">type</span> datagram_multiplex_controller =<br> <span class="keyword">object</span><br> <span class="keyword">method</span> alive : bool<br> <span class="keyword">method</span> cancel_reading : unit <span class="keywordsign">-></span> unit<br> <span class="keyword">method</span> cancel_shutting_down : unit <span class="keywordsign">-></span> unit<br> <span class="keyword">method</span> cancel_writing : unit <span class="keywordsign">-></span> unit<br> <span class="keyword">method</span> event_system : <span class="constructor">Unixqueue</span>.event_system<br> <span class="keyword">method</span> inactivate : unit <span class="keywordsign">-></span> unit<br> <span class="keyword">method</span> read_eof : bool<br> <span class="keyword">method</span> reading : bool<br> <span class="keyword">method</span> received_from : <span class="constructor">Unix</span>.sockaddr<br> <span class="keyword">method</span> send_to : <span class="constructor">Unix</span>.sockaddr <span class="keywordsign">-></span> unit<br> <span class="keyword">method</span> shutting_down : bool<br> <span class="keyword">method</span> start_reading :<br> ?peek:(unit <span class="keywordsign">-></span> unit) <span class="keywordsign">-></span><br> when_done:(exn option <span class="keywordsign">-></span> int <span class="keywordsign">-></span> unit) <span class="keywordsign">-></span> string <span class="keywordsign">-></span> int <span class="keywordsign">-></span> int <span class="keywordsign">-></span> unit<br> <span class="keyword">method</span> start_shutting_down :<br> ?linger:float <span class="keywordsign">-></span> when_done:(exn option <span class="keywordsign">-></span> unit) <span class="keywordsign">-></span> unit <span class="keywordsign">-></span> unit<br> <span class="keyword">method</span> start_writing :<br> when_done:(exn option <span class="keywordsign">-></span> int <span class="keywordsign">-></span> unit) <span class="keywordsign">-></span> string <span class="keywordsign">-></span> int <span class="keywordsign">-></span> int <span class="keywordsign">-></span> unit<br> <span class="keyword">method</span> start_writing_eof :<br> when_done:(exn option <span class="keywordsign">-></span> unit) <span class="keywordsign">-></span> unit <span class="keywordsign">-></span> unit<br> <span class="keyword">method</span> supports_half_open_connection : bool<br> <span class="keyword">method</span> writing : bool<br> <span class="keyword">method</span> wrote_eof : bool<br> <span class="keyword">end</span><br> <span class="keyword">val</span> create_multiplex_controller_for_datagram_socket :<br> ?close_inactive_descr:bool <span class="keywordsign">-></span><br> <span class="constructor">Unix</span>.file_descr <span class="keywordsign">-></span><br> <span class="constructor">Unixqueue</span>.unix_event_system <span class="keywordsign">-></span> <span class="constructor">Uq_engines</span>.datagram_multiplex_controller<br> <span class="keyword">type</span> onshutdown_out_spec =<br> [ <span class="keywordsign">`</span><span class="constructor">Action</span> <span class="keyword">of</span><br> <span class="constructor">Uq_engines</span>.async_out_channel_engine <span class="keywordsign">-></span><br> <span class="constructor">Uq_engines</span>.multiplex_controller <span class="keywordsign">-></span><br> unit <span class="constructor">Uq_engines</span>.engine_state <span class="keywordsign">-></span> unit<br> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">Ignore</span><br> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">Initiate_shutdown</span> ]<br> <span class="keyword">type</span> onshutdown_in_spec =<br> [ <span class="keywordsign">`</span><span class="constructor">Action</span> <span class="keyword">of</span><br> <span class="constructor">Uq_engines</span>.async_in_channel_engine <span class="keywordsign">-></span><br> <span class="constructor">Uq_engines</span>.multiplex_controller <span class="keywordsign">-></span><br> unit <span class="constructor">Uq_engines</span>.engine_state <span class="keywordsign">-></span> unit<br> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">Ignore</span><br> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">Initiate_shutdown</span> ]<br> <span class="keyword">class</span> output_async_mplex :<br> ?onclose:[ <span class="keywordsign">`</span><span class="constructor">Ignore</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">Write_eof</span> ] <span class="keywordsign">-></span><br> ?onshutdown:<span class="constructor">Uq_engines</span>.onshutdown_out_spec <span class="keywordsign">-></span><br> ?buffer_size:int <span class="keywordsign">-></span><br> <span class="constructor">Uq_engines</span>.multiplex_controller <span class="keywordsign">-></span> async_out_channel_engine<br> <span class="keyword">class</span> input_async_mplex :<br> ?onshutdown:<span class="constructor">Uq_engines</span>.onshutdown_in_spec <span class="keywordsign">-></span><br> ?buffer_size:int <span class="keywordsign">-></span><br> <span class="constructor">Uq_engines</span>.multiplex_controller <span class="keywordsign">-></span> async_in_channel_engine<br> <span class="keyword">end</span></code></body></html>