1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<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 rel="Up" href="Unixqueue.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 : Unixqueue.event_system</title>
</head>
<body>
<div class="navbar"> <a href="Unixqueue.html">Up</a>
</div>
<center><h1>Class type <a href="type_Unixqueue.event_system.html">Unixqueue.event_system</a></h1></center>
<br>
<pre><span class="keyword">class type</span> <a name="TYPEevent_system"></a>event_system = <code class="code">object</code> <a href="Unixqueue.event_system.html">..</a> <code class="code">end</code></pre>The <code class="code">event_system</code> manages events, handlers, resources, groups,
etc. It is now a class type, and you may invoke the operations directly
for the class. The operations are still available as functions (below).
<p>
A <b>resource</b> is an operation with an optional timer. The operation
describes the condition to watch for, and the timer defines the
maximum period of time for that. If the condition becomes true,
an <code class="code">Input_arrived</code>, <code class="code">Output_readiness</code>, or <code class="code">Out_of_band</code> event
will be triggered. If the timer expires, a <code class="code">Timeout</code> event will be
generated. After the event the resource remains active, and the
timeout period begins anew.
<p>
A resource is usually bound to a file descriptor. It is allowed
to watch the same descriptor for several different conditions,
but it is forbidden to watch the same descriptor for the same kind
of condition several times.
<p>
As a special case, the operation <code class="code">Wait</code> is not bound to a
file descriptor, but simply starts a timer. The argument of <code class="code">Wait</code>
can be used to distinguish between several timers that are active
at the same time.
<p>
<b>Event handlers</b> get the events one after the other, and
process them. When a handler is called for an event, there are
several possible reactions: (1) The handler can return normally,
which means that the event has been accepted, and will not be
passed to any other handler. (2) The handler can raise
<a href="Equeue.html#EXCEPTIONReject"><code class="code">Equeue.Reject</code></a>, which means that the handler cannot process
the event, and that another handler should get it. (3) The handler
can raise <a href="Equeue.html#EXCEPTIONTerminate"><code class="code">Equeue.Terminate</code></a> which means that the event has been
accepted, and that the handler is terminated (it will never be
called again). (4) The handler can raise <code class="code">Abort</code> which means that
the event is deferred, and that a special abort mechanism is
triggered (see the description for <code class="code">Abort</code> above), this is also
terminates the handler. The deferred event will again be processed
in the future. (5) The handler can raise any other exception.
This causes that the event is deferred, and the exception falls
through to the caller of <code class="code">run</code>.
<p>
<b>Groups</b> are used to simplify the association of events to
handlers, and to simplify the termination of handlers (see <code class="code">clear</code>).
If an event is associated with a group, only handlers associated with
the same group will get them.
<p>
There is a special <b>Close handler</b> which is useful to close file
descriptors no longer needed. It is called when all resources are
removed from the event system dealing with the file descriptor.
The close handler should close the descriptor. Note that close handlers
are only useful under certain circumstances.
<br>
<hr width="100%">
<pre><span class="keyword">method</span> <a name="METHODnew_group"></a>new_group : <code class="type">unit -> <a href="Unixqueue.html#TYPEgroup">group</a></code></pre><pre><span class="keyword">method</span> <a name="METHODnew_wait_id"></a>new_wait_id : <code class="type">unit -> <a href="Unixqueue.html#TYPEwait_id">wait_id</a></code></pre><pre><span class="keyword">method</span> <a name="METHODexists_resource"></a>exists_resource : <code class="type"><a href="Unixqueue.html#TYPEoperation">operation</a> -> bool</code></pre><pre><span class="keyword">method</span> <a name="METHODadd_resource"></a>add_resource : <code class="type"><a href="Unixqueue.html#TYPEgroup">group</a> -> <a href="Unixqueue.html#TYPEoperation">operation</a> * float -> unit</code></pre><pre><span class="keyword">method</span> <a name="METHODadd_close_action"></a>add_close_action : <code class="type"><a href="Unixqueue.html#TYPEgroup">group</a> -> Unix.file_descr * (Unix.file_descr -> unit) -> unit</code></pre><pre><span class="keyword">method</span> <a name="METHODadd_abort_action"></a>add_abort_action : <code class="type"><a href="Unixqueue.html#TYPEgroup">group</a> -> (<a href="Unixqueue.html#TYPEgroup">group</a> -> exn -> unit) -> unit</code></pre><pre><span class="keyword">method</span> <a name="METHODremove_resource"></a>remove_resource : <code class="type"><a href="Unixqueue.html#TYPEgroup">group</a> -> <a href="Unixqueue.html#TYPEoperation">operation</a> -> unit</code></pre><pre><span class="keyword">method</span> <a name="METHODadd_handler"></a>add_handler : <code class="type"><a href="Unixqueue.html#TYPEgroup">group</a> -><br> (<a href="Unixqueue.event_system.html">event_system</a> -><br> <a href="Unixqueue.html#TYPEevent">event</a> <a href="Equeue.html#TYPEt">Equeue.t</a> -> <a href="Unixqueue.html#TYPEevent">event</a> -> unit) -><br> unit</code></pre><pre><span class="keyword">method</span> <a name="METHODadd_event"></a>add_event : <code class="type"><a href="Unixqueue.html#TYPEevent">event</a> -> unit</code></pre><pre><span class="keyword">method</span> <a name="METHODclear"></a>clear : <code class="type"><a href="Unixqueue.html#TYPEgroup">group</a> -> unit</code></pre><pre><span class="keyword">method</span> <a name="METHODrun"></a>run : <code class="type">unit -> unit</code></pre><pre><span class="keyword">method</span> <a name="METHODis_running"></a>is_running : <code class="type">bool</code></pre><pre><span class="keyword">method</span> <a name="METHODonce"></a>once : <code class="type"><a href="Unixqueue.html#TYPEgroup">group</a> -> float -> (unit -> unit) -> unit</code></pre><pre><span class="keyword">method</span> <a name="METHODexn_log"></a>exn_log : <code class="type">?suppressed:bool -><br> ?to_string:(exn -> string) -> ?label:string -> exn -> unit</code></pre><pre><span class="keyword">method</span> <a name="METHODdebug_log"></a>debug_log : <code class="type">?label:string -> string -> unit</code></pre><pre><span class="keyword">method</span> <a name="METHODsetup"></a><span class="keyword">private</span> setup : <code class="type">unit -><br> Unix.file_descr list * Unix.file_descr list * Unix.file_descr list * float</code></pre><pre><span class="keyword">method</span> <a name="METHODqueue_events"></a><span class="keyword">private</span> queue_events : <code class="type">Unix.file_descr list * Unix.file_descr list * Unix.file_descr list -> bool</code></pre><pre><span class="keyword">method</span> <a name="METHODsource"></a><span class="keyword">private</span> source : <code class="type"><a href="Unixqueue.html#TYPEevent">event</a> <a href="Equeue.html#TYPEt">Equeue.t</a> -> unit</code></pre></body></html>
|