<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 modules" rel=Appendix href="index_modules.html"> <link title="Index of module types" rel=Appendix href="index_module_types.html"> <link title="Command" rel="Chapter" href="Command.html"> <link title="File_tail" rel="Chapter" href="File_tail.html"> <link title="File_writer" rel="Chapter" href="File_writer.html"> <link title="Import" rel="Chapter" href="Import.html"> <link title="Lock_file" rel="Chapter" href="Lock_file.html"> <link title="Log" rel="Chapter" href="Log.html"> <link title="Persistent_singleton" rel="Chapter" href="Persistent_singleton.html"> <link title="Rpc" rel="Chapter" href="Rpc.html"> <link title="Rpc_intf" rel="Chapter" href="Rpc_intf.html"> <link title="Std" rel="Chapter" href="Std.html"> <link title="Tcp" rel="Chapter" href="Tcp.html"> <link title="Tcp_file" rel="Chapter" href="Tcp_file.html"> <link title="Typed_tcp" rel="Chapter" href="Typed_tcp.html"> <link title="Typed_tcp_intf" rel="Chapter" href="Typed_tcp_intf.html"> <link title="Unpack_sequence" rel="Chapter" href="Unpack_sequence.html"> <link title="User_and_group" rel="Chapter" href="User_and_group.html"> <link title="Versioned_rpc" rel="Chapter" href="Versioned_rpc.html"> <link title="Versioned_typed_tcp" rel="Chapter" href="Versioned_typed_tcp.html"> <link title="Weak_hashtbl" rel="Chapter" href="Weak_hashtbl.html"><title>Tcp</title> </head> <body> <code class="code"><span class="keyword">sig</span><br> <span class="keyword">type</span> <span class="keywordsign">'</span>a where_to_connect <span class="keyword">constraint</span> <span class="keywordsign">'</span>a = [< <span class="constructor">Import</span>.<span class="constructor">Socket</span>.<span class="constructor">Address</span>.t ]<br> <span class="keyword">val</span> to_host_and_port :<br> string <span class="keywordsign">-></span> int <span class="keywordsign">-></span> <span class="constructor">Import</span>.<span class="constructor">Socket</span>.<span class="constructor">Address</span>.<span class="constructor">Inet</span>.t <span class="constructor">Tcp</span>.where_to_connect<br> <span class="keyword">val</span> to_file : string <span class="keywordsign">-></span> <span class="constructor">Import</span>.<span class="constructor">Socket</span>.<span class="constructor">Address</span>.<span class="constructor">Unix</span>.t <span class="constructor">Tcp</span>.where_to_connect<br> <span class="keyword">type</span> <span class="keywordsign">'</span>a with_connect_options =<br> ?buffer_age_limit:[ <span class="keywordsign">`</span><span class="constructor">At_most</span> <span class="keyword">of</span> <span class="constructor">Core</span>.<span class="constructor">Std</span>.<span class="constructor">Time</span>.<span class="constructor">Span</span>.t <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">Unlimited</span> ] <span class="keywordsign">-></span><br> ?interrupt:unit <span class="constructor">Import</span>.<span class="constructor">Deferred</span>.t <span class="keywordsign">-></span><br> ?reader_buffer_size:int <span class="keywordsign">-></span> ?timeout:<span class="constructor">Core</span>.<span class="constructor">Std</span>.<span class="constructor">Time</span>.<span class="constructor">Span</span>.t <span class="keywordsign">-></span> <span class="keywordsign">'</span>a<br> <span class="keyword">val</span> with_connection :<br> (([< <span class="constructor">Import</span>.<span class="constructor">Socket</span>.<span class="constructor">Address</span>.t ] <span class="keyword">as</span> <span class="keywordsign">'</span>b) <span class="constructor">Tcp</span>.where_to_connect <span class="keywordsign">-></span><br> (([ <span class="keywordsign">`</span><span class="constructor">Active</span> ], <span class="keywordsign">'</span>b) <span class="constructor">Import</span>.<span class="constructor">Socket</span>.t <span class="keywordsign">-></span><br> <span class="constructor">Import</span>.<span class="constructor">Reader</span>.t <span class="keywordsign">-></span> <span class="constructor">Import</span>.<span class="constructor">Writer</span>.t <span class="keywordsign">-></span> <span class="keywordsign">'</span>a <span class="constructor">Import</span>.<span class="constructor">Deferred</span>.t) <span class="keywordsign">-></span><br> <span class="keywordsign">'</span>a <span class="constructor">Import</span>.<span class="constructor">Deferred</span>.t)<br> <span class="constructor">Tcp</span>.with_connect_options<br> <span class="keyword">val</span> connect_sock :<br> ([< <span class="constructor">Import</span>.<span class="constructor">Socket</span>.<span class="constructor">Address</span>.t ] <span class="keyword">as</span> <span class="keywordsign">'</span>a) <span class="constructor">Tcp</span>.where_to_connect <span class="keywordsign">-></span><br> ([ <span class="keywordsign">`</span><span class="constructor">Active</span> ], <span class="keywordsign">'</span>a) <span class="constructor">Import</span>.<span class="constructor">Socket</span>.t <span class="constructor">Import</span>.<span class="constructor">Deferred</span>.t<br> <span class="keyword">val</span> connect :<br> (([< <span class="constructor">Import</span>.<span class="constructor">Socket</span>.<span class="constructor">Address</span>.t ] <span class="keyword">as</span> <span class="keywordsign">'</span>a) <span class="constructor">Tcp</span>.where_to_connect <span class="keywordsign">-></span><br> (([ <span class="keywordsign">`</span><span class="constructor">Active</span> ], <span class="keywordsign">'</span>a) <span class="constructor">Import</span>.<span class="constructor">Socket</span>.t * <span class="constructor">Import</span>.<span class="constructor">Reader</span>.t * <span class="constructor">Import</span>.<span class="constructor">Writer</span>.t)<br> <span class="constructor">Import</span>.<span class="constructor">Deferred</span>.t)<br> <span class="constructor">Tcp</span>.with_connect_options<br> <span class="keyword">module</span> <span class="constructor">Where_to_listen</span> :<br> <span class="keyword">sig</span><br> <span class="keyword">type</span> (<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>listening_on) t <span class="keyword">constraint</span> <span class="keywordsign">'</span>a = [< <span class="constructor">Import</span>.<span class="constructor">Socket</span>.<span class="constructor">Address</span>.t ]<br> <span class="keyword">type</span> inet = (<span class="constructor">Import</span>.<span class="constructor">Socket</span>.<span class="constructor">Address</span>.<span class="constructor">Inet</span>.t, int) <span class="constructor">Tcp</span>.<span class="constructor">Where_to_listen</span>.t<br> <span class="keyword">type</span> unix =<br> (<span class="constructor">Import</span>.<span class="constructor">Socket</span>.<span class="constructor">Address</span>.<span class="constructor">Unix</span>.t, string) <span class="constructor">Tcp</span>.<span class="constructor">Where_to_listen</span>.t<br> <span class="keyword">val</span> create :<br> socket_type:([< <span class="constructor">Import</span>.<span class="constructor">Socket</span>.<span class="constructor">Address</span>.t ] <span class="keyword">as</span> <span class="keywordsign">'</span>a) <span class="constructor">Import</span>.<span class="constructor">Socket</span>.<span class="constructor">Type</span>.t <span class="keywordsign">-></span><br> address:<span class="keywordsign">'</span>a <span class="keywordsign">-></span><br> listening_on:(<span class="keywordsign">'</span>a <span class="keywordsign">-></span> <span class="keywordsign">'</span>listening_on) <span class="keywordsign">-></span><br> (<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>listening_on) <span class="constructor">Tcp</span>.<span class="constructor">Where_to_listen</span>.t<br> <span class="keyword">end</span><br> <span class="keyword">val</span> on_port : int <span class="keywordsign">-></span> <span class="constructor">Tcp</span>.<span class="constructor">Where_to_listen</span>.inet<br> <span class="keyword">val</span> on_port_chosen_by_os : <span class="constructor">Tcp</span>.<span class="constructor">Where_to_listen</span>.inet<br> <span class="keyword">val</span> on_file : string <span class="keywordsign">-></span> <span class="constructor">Tcp</span>.<span class="constructor">Where_to_listen</span>.unix<br> <span class="keyword">module</span> <span class="constructor">Server</span> :<br> <span class="keyword">sig</span><br> <span class="keyword">type</span> (<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>listening_on) t <span class="keyword">constraint</span> <span class="keywordsign">'</span>a = [< <span class="constructor">Import</span>.<span class="constructor">Socket</span>.<span class="constructor">Address</span>.t ]<br> <span class="keyword">type</span> inet = (<span class="constructor">Import</span>.<span class="constructor">Socket</span>.<span class="constructor">Address</span>.<span class="constructor">Inet</span>.t, int) <span class="constructor">Tcp</span>.<span class="constructor">Server</span>.t<br> <span class="keyword">type</span> unix = (<span class="constructor">Import</span>.<span class="constructor">Socket</span>.<span class="constructor">Address</span>.<span class="constructor">Unix</span>.t, string) <span class="constructor">Tcp</span>.<span class="constructor">Server</span>.t<br> <span class="keyword">val</span> invariant : ([< <span class="constructor">Import</span>.<span class="constructor">Socket</span>.<span class="constructor">Address</span>.t ], <span class="keywordsign">'</span>a) <span class="constructor">Tcp</span>.<span class="constructor">Server</span>.t <span class="keywordsign">-></span> unit<br> <span class="keyword">val</span> listening_on :<br> ([< <span class="constructor">Import</span>.<span class="constructor">Socket</span>.<span class="constructor">Address</span>.t ], <span class="keywordsign">'</span>listening_on) <span class="constructor">Tcp</span>.<span class="constructor">Server</span>.t <span class="keywordsign">-></span><br> <span class="keywordsign">'</span>listening_on<br> <span class="keyword">val</span> close :<br> ([< <span class="constructor">Import</span>.<span class="constructor">Socket</span>.<span class="constructor">Address</span>.t ], <span class="keywordsign">'</span>a) <span class="constructor">Tcp</span>.<span class="constructor">Server</span>.t <span class="keywordsign">-></span><br> unit <span class="constructor">Import</span>.<span class="constructor">Deferred</span>.t<br> <span class="keyword">val</span> close_finished :<br> ([< <span class="constructor">Import</span>.<span class="constructor">Socket</span>.<span class="constructor">Address</span>.t ], <span class="keywordsign">'</span>a) <span class="constructor">Tcp</span>.<span class="constructor">Server</span>.t <span class="keywordsign">-></span><br> unit <span class="constructor">Import</span>.<span class="constructor">Deferred</span>.t<br> <span class="keyword">val</span> is_closed : ([< <span class="constructor">Import</span>.<span class="constructor">Socket</span>.<span class="constructor">Address</span>.t ], <span class="keywordsign">'</span>a) <span class="constructor">Tcp</span>.<span class="constructor">Server</span>.t <span class="keywordsign">-></span> bool<br> <span class="keyword">val</span> create :<br> ?max_connections:int <span class="keywordsign">-></span><br> ?max_pending_connections:int <span class="keywordsign">-></span><br> ?buffer_age_limit:<span class="constructor">Import</span>.<span class="constructor">Writer</span>.buffer_age_limit <span class="keywordsign">-></span><br> ?on_handler_error:[ <span class="keywordsign">`</span><span class="constructor">Call</span> <span class="keyword">of</span><br> ([< <span class="constructor">Import</span>.<span class="constructor">Socket</span>.<span class="constructor">Address</span>.t ] <span class="keyword">as</span> <span class="keywordsign">'</span>a) <span class="keywordsign">-></span><br> exn <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">Raise</span> ] <span class="keywordsign">-></span><br> (<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>listening_on) <span class="constructor">Tcp</span>.<span class="constructor">Where_to_listen</span>.t <span class="keywordsign">-></span><br> (<span class="keywordsign">'</span>a <span class="keywordsign">-></span> <span class="constructor">Import</span>.<span class="constructor">Reader</span>.t <span class="keywordsign">-></span> <span class="constructor">Import</span>.<span class="constructor">Writer</span>.t <span class="keywordsign">-></span> unit <span class="constructor">Import</span>.<span class="constructor">Deferred</span>.t) <span class="keywordsign">-></span><br> (<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>listening_on) <span class="constructor">Tcp</span>.<span class="constructor">Server</span>.t <span class="constructor">Import</span>.<span class="constructor">Deferred</span>.t<br> <span class="keyword">end</span><br> <span class="keyword">end</span></code></body></html>