1
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
4
<link rel="stylesheet" href="style.css" type="text/css">
5
<meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type">
6
<link rel="Start" href="index.html">
7
<link rel="Up" href="Unixqueue.html">
8
<link title="Index of types" rel=Appendix href="index_types.html">
9
<link title="Index of exceptions" rel=Appendix href="index_exceptions.html">
10
<link title="Index of values" rel=Appendix href="index_values.html">
11
<link title="Index of class attributes" rel=Appendix href="index_attributes.html">
12
<link title="Index of class methods" rel=Appendix href="index_methods.html">
13
<link title="Index of classes" rel=Appendix href="index_classes.html">
14
<link title="Index of class types" rel=Appendix href="index_class_types.html">
15
<link title="Index of modules" rel=Appendix href="index_modules.html">
16
<link title="Index of module types" rel=Appendix href="index_module_types.html">
17
<link title="Uq_gtk" rel="Chapter" href="Uq_gtk.html">
18
<link title="Uq_ssl" rel="Chapter" href="Uq_ssl.html">
19
<link title="Https_client" rel="Chapter" href="Https_client.html">
20
<link title="Uq_tcl" rel="Chapter" href="Uq_tcl.html">
21
<link title="Equeue" rel="Chapter" href="Equeue.html">
22
<link title="Unixqueue" rel="Chapter" href="Unixqueue.html">
23
<link title="Unixqueue_pollset" rel="Chapter" href="Unixqueue_pollset.html">
24
<link title="Unixqueue_select" rel="Chapter" href="Unixqueue_select.html">
25
<link title="Uq_resolver" rel="Chapter" href="Uq_resolver.html">
26
<link title="Uq_engines" rel="Chapter" href="Uq_engines.html">
27
<link title="Uq_socks5" rel="Chapter" href="Uq_socks5.html">
28
<link title="Uq_io" rel="Chapter" href="Uq_io.html">
29
<link title="Uq_lwt" rel="Chapter" href="Uq_lwt.html">
30
<link title="Uq_libevent" rel="Chapter" href="Uq_libevent.html">
31
<link title="Equeue_intro" rel="Chapter" href="Equeue_intro.html">
32
<link title="Netcamlbox" rel="Chapter" href="Netcamlbox.html">
33
<link title="Netcgi_apache" rel="Chapter" href="Netcgi_apache.html">
34
<link title="Netcgi_modtpl" rel="Chapter" href="Netcgi_modtpl.html">
35
<link title="Netcgi_plex" rel="Chapter" href="Netcgi_plex.html">
36
<link title="Netcgi_common" rel="Chapter" href="Netcgi_common.html">
37
<link title="Netcgi" rel="Chapter" href="Netcgi.html">
38
<link title="Netcgi_ajp" rel="Chapter" href="Netcgi_ajp.html">
39
<link title="Netcgi_scgi" rel="Chapter" href="Netcgi_scgi.html">
40
<link title="Netcgi_cgi" rel="Chapter" href="Netcgi_cgi.html">
41
<link title="Netcgi_fcgi" rel="Chapter" href="Netcgi_fcgi.html">
42
<link title="Netcgi_dbi" rel="Chapter" href="Netcgi_dbi.html">
43
<link title="Netcgi1_compat" rel="Chapter" href="Netcgi1_compat.html">
44
<link title="Netcgi_test" rel="Chapter" href="Netcgi_test.html">
45
<link title="Netcgi_porting" rel="Chapter" href="Netcgi_porting.html">
46
<link title="Http_client_conncache" rel="Chapter" href="Http_client_conncache.html">
47
<link title="Http_client" rel="Chapter" href="Http_client.html">
48
<link title="Telnet_client" rel="Chapter" href="Telnet_client.html">
49
<link title="Ftp_data_endpoint" rel="Chapter" href="Ftp_data_endpoint.html">
50
<link title="Ftp_client" rel="Chapter" href="Ftp_client.html">
51
<link title="Http_fs" rel="Chapter" href="Http_fs.html">
52
<link title="Ftp_fs" rel="Chapter" href="Ftp_fs.html">
53
<link title="Netclient_tut" rel="Chapter" href="Netclient_tut.html">
54
<link title="Netgssapi" rel="Chapter" href="Netgssapi.html">
55
<link title="Nethttpd_types" rel="Chapter" href="Nethttpd_types.html">
56
<link title="Nethttpd_kernel" rel="Chapter" href="Nethttpd_kernel.html">
57
<link title="Nethttpd_reactor" rel="Chapter" href="Nethttpd_reactor.html">
58
<link title="Nethttpd_engine" rel="Chapter" href="Nethttpd_engine.html">
59
<link title="Nethttpd_services" rel="Chapter" href="Nethttpd_services.html">
60
<link title="Nethttpd_plex" rel="Chapter" href="Nethttpd_plex.html">
61
<link title="Nethttpd_util" rel="Chapter" href="Nethttpd_util.html">
62
<link title="Nethttpd_intro" rel="Chapter" href="Nethttpd_intro.html">
63
<link title="Netmech_scram" rel="Chapter" href="Netmech_scram.html">
64
<link title="Netmech_scram_gssapi" rel="Chapter" href="Netmech_scram_gssapi.html">
65
<link title="Netmcore" rel="Chapter" href="Netmcore.html">
66
<link title="Netmcore_camlbox" rel="Chapter" href="Netmcore_camlbox.html">
67
<link title="Netmcore_mempool" rel="Chapter" href="Netmcore_mempool.html">
68
<link title="Netmcore_heap" rel="Chapter" href="Netmcore_heap.html">
69
<link title="Netmcore_ref" rel="Chapter" href="Netmcore_ref.html">
70
<link title="Netmcore_array" rel="Chapter" href="Netmcore_array.html">
71
<link title="Netmcore_sem" rel="Chapter" href="Netmcore_sem.html">
72
<link title="Netmcore_mutex" rel="Chapter" href="Netmcore_mutex.html">
73
<link title="Netmcore_condition" rel="Chapter" href="Netmcore_condition.html">
74
<link title="Netmcore_queue" rel="Chapter" href="Netmcore_queue.html">
75
<link title="Netmcore_buffer" rel="Chapter" href="Netmcore_buffer.html">
76
<link title="Netmcore_matrix" rel="Chapter" href="Netmcore_matrix.html">
77
<link title="Netmcore_hashtbl" rel="Chapter" href="Netmcore_hashtbl.html">
78
<link title="Netmcore_process" rel="Chapter" href="Netmcore_process.html">
79
<link title="Netmcore_tut" rel="Chapter" href="Netmcore_tut.html">
80
<link title="Netplex_types" rel="Chapter" href="Netplex_types.html">
81
<link title="Netplex_mp" rel="Chapter" href="Netplex_mp.html">
82
<link title="Netplex_mt" rel="Chapter" href="Netplex_mt.html">
83
<link title="Netplex_log" rel="Chapter" href="Netplex_log.html">
84
<link title="Netplex_controller" rel="Chapter" href="Netplex_controller.html">
85
<link title="Netplex_container" rel="Chapter" href="Netplex_container.html">
86
<link title="Netplex_sockserv" rel="Chapter" href="Netplex_sockserv.html">
87
<link title="Netplex_workload" rel="Chapter" href="Netplex_workload.html">
88
<link title="Netplex_main" rel="Chapter" href="Netplex_main.html">
89
<link title="Netplex_config" rel="Chapter" href="Netplex_config.html">
90
<link title="Netplex_kit" rel="Chapter" href="Netplex_kit.html">
91
<link title="Rpc_netplex" rel="Chapter" href="Rpc_netplex.html">
92
<link title="Netplex_cenv" rel="Chapter" href="Netplex_cenv.html">
93
<link title="Netplex_semaphore" rel="Chapter" href="Netplex_semaphore.html">
94
<link title="Netplex_sharedvar" rel="Chapter" href="Netplex_sharedvar.html">
95
<link title="Netplex_mutex" rel="Chapter" href="Netplex_mutex.html">
96
<link title="Netplex_encap" rel="Chapter" href="Netplex_encap.html">
97
<link title="Netplex_intro" rel="Chapter" href="Netplex_intro.html">
98
<link title="Netplex_advanced" rel="Chapter" href="Netplex_advanced.html">
99
<link title="Netplex_admin" rel="Chapter" href="Netplex_admin.html">
100
<link title="Netshm" rel="Chapter" href="Netshm.html">
101
<link title="Netshm_data" rel="Chapter" href="Netshm_data.html">
102
<link title="Netshm_hashtbl" rel="Chapter" href="Netshm_hashtbl.html">
103
<link title="Netshm_array" rel="Chapter" href="Netshm_array.html">
104
<link title="Netshm_intro" rel="Chapter" href="Netshm_intro.html">
105
<link title="Netconversion" rel="Chapter" href="Netconversion.html">
106
<link title="Netchannels" rel="Chapter" href="Netchannels.html">
107
<link title="Netstream" rel="Chapter" href="Netstream.html">
108
<link title="Mimestring" rel="Chapter" href="Mimestring.html">
109
<link title="Netmime" rel="Chapter" href="Netmime.html">
110
<link title="Netsendmail" rel="Chapter" href="Netsendmail.html">
111
<link title="Neturl" rel="Chapter" href="Neturl.html">
112
<link title="Netaddress" rel="Chapter" href="Netaddress.html">
113
<link title="Netbuffer" rel="Chapter" href="Netbuffer.html">
114
<link title="Netdate" rel="Chapter" href="Netdate.html">
115
<link title="Netencoding" rel="Chapter" href="Netencoding.html">
116
<link title="Netulex" rel="Chapter" href="Netulex.html">
117
<link title="Netaccel" rel="Chapter" href="Netaccel.html">
118
<link title="Netaccel_link" rel="Chapter" href="Netaccel_link.html">
119
<link title="Nethtml" rel="Chapter" href="Nethtml.html">
120
<link title="Netstring_str" rel="Chapter" href="Netstring_str.html">
121
<link title="Netstring_pcre" rel="Chapter" href="Netstring_pcre.html">
122
<link title="Netmappings" rel="Chapter" href="Netmappings.html">
123
<link title="Netaux" rel="Chapter" href="Netaux.html">
124
<link title="Nethttp" rel="Chapter" href="Nethttp.html">
125
<link title="Netpagebuffer" rel="Chapter" href="Netpagebuffer.html">
126
<link title="Netfs" rel="Chapter" href="Netfs.html">
127
<link title="Netglob" rel="Chapter" href="Netglob.html">
128
<link title="Netauth" rel="Chapter" href="Netauth.html">
129
<link title="Netsockaddr" rel="Chapter" href="Netsockaddr.html">
130
<link title="Netnumber" rel="Chapter" href="Netnumber.html">
131
<link title="Rtypes" rel="Chapter" href="Rtypes.html">
132
<link title="Xdr_mstring" rel="Chapter" href="Xdr_mstring.html">
133
<link title="Xdr" rel="Chapter" href="Xdr.html">
134
<link title="Netcompression" rel="Chapter" href="Netcompression.html">
135
<link title="Netchannels_tut" rel="Chapter" href="Netchannels_tut.html">
136
<link title="Netmime_tut" rel="Chapter" href="Netmime_tut.html">
137
<link title="Netsendmail_tut" rel="Chapter" href="Netsendmail_tut.html">
138
<link title="Netulex_tut" rel="Chapter" href="Netulex_tut.html">
139
<link title="Neturl_tut" rel="Chapter" href="Neturl_tut.html">
140
<link title="Netsys" rel="Chapter" href="Netsys.html">
141
<link title="Netsys_posix" rel="Chapter" href="Netsys_posix.html">
142
<link title="Netsys_pollset" rel="Chapter" href="Netsys_pollset.html">
143
<link title="Netlog" rel="Chapter" href="Netlog.html">
144
<link title="Netexn" rel="Chapter" href="Netexn.html">
145
<link title="Netsys_win32" rel="Chapter" href="Netsys_win32.html">
146
<link title="Netsys_pollset_posix" rel="Chapter" href="Netsys_pollset_posix.html">
147
<link title="Netsys_pollset_win32" rel="Chapter" href="Netsys_pollset_win32.html">
148
<link title="Netsys_pollset_generic" rel="Chapter" href="Netsys_pollset_generic.html">
149
<link title="Netsys_signal" rel="Chapter" href="Netsys_signal.html">
150
<link title="Netsys_oothr" rel="Chapter" href="Netsys_oothr.html">
151
<link title="Netsys_xdr" rel="Chapter" href="Netsys_xdr.html">
152
<link title="Netsys_rng" rel="Chapter" href="Netsys_rng.html">
153
<link title="Netsys_types" rel="Chapter" href="Netsys_types.html">
154
<link title="Netsys_mem" rel="Chapter" href="Netsys_mem.html">
155
<link title="Netsys_tmp" rel="Chapter" href="Netsys_tmp.html">
156
<link title="Netgzip" rel="Chapter" href="Netgzip.html">
157
<link title="Netpop" rel="Chapter" href="Netpop.html">
158
<link title="Rpc_auth_dh" rel="Chapter" href="Rpc_auth_dh.html">
159
<link title="Rpc_key_service" rel="Chapter" href="Rpc_key_service.html">
160
<link title="Rpc_time" rel="Chapter" href="Rpc_time.html">
161
<link title="Rpc_auth_local" rel="Chapter" href="Rpc_auth_local.html">
162
<link title="Rpc_ssl" rel="Chapter" href="Rpc_ssl.html">
163
<link title="Rpc_xti_client" rel="Chapter" href="Rpc_xti_client.html">
164
<link title="Rpc" rel="Chapter" href="Rpc.html">
165
<link title="Rpc_program" rel="Chapter" href="Rpc_program.html">
166
<link title="Rpc_util" rel="Chapter" href="Rpc_util.html">
167
<link title="Rpc_portmapper_aux" rel="Chapter" href="Rpc_portmapper_aux.html">
168
<link title="Rpc_packer" rel="Chapter" href="Rpc_packer.html">
169
<link title="Rpc_transport" rel="Chapter" href="Rpc_transport.html">
170
<link title="Rpc_client" rel="Chapter" href="Rpc_client.html">
171
<link title="Rpc_simple_client" rel="Chapter" href="Rpc_simple_client.html">
172
<link title="Rpc_portmapper_clnt" rel="Chapter" href="Rpc_portmapper_clnt.html">
173
<link title="Rpc_portmapper" rel="Chapter" href="Rpc_portmapper.html">
174
<link title="Rpc_server" rel="Chapter" href="Rpc_server.html">
175
<link title="Rpc_auth_sys" rel="Chapter" href="Rpc_auth_sys.html">
176
<link title="Rpc_auth_gssapi" rel="Chapter" href="Rpc_auth_gssapi.html">
177
<link title="Rpc_proxy" rel="Chapter" href="Rpc_proxy.html">
178
<link title="Rpc_intro" rel="Chapter" href="Rpc_intro.html">
179
<link title="Rpc_mapping_ref" rel="Chapter" href="Rpc_mapping_ref.html">
180
<link title="Rpc_intro_gss" rel="Chapter" href="Rpc_intro_gss.html">
181
<link title="Shell_sys" rel="Chapter" href="Shell_sys.html">
182
<link title="Shell" rel="Chapter" href="Shell.html">
183
<link title="Shell_uq" rel="Chapter" href="Shell_uq.html">
184
<link title="Shell_fs" rel="Chapter" href="Shell_fs.html">
185
<link title="Shell_intro" rel="Chapter" href="Shell_intro.html">
186
<link title="Netsmtp" rel="Chapter" href="Netsmtp.html">
187
<link title="Intro" rel="Chapter" href="Intro.html">
188
<link title="Platform" rel="Chapter" href="Platform.html">
189
<link title="Foreword" rel="Chapter" href="Foreword.html">
190
<link title="Ipv6" rel="Chapter" href="Ipv6.html"><title>Ocamlnet 3 Reference Manual : Unixqueue.event_system</title>
193
<div class="navbar"> <a href="Unixqueue.html">Up</a>
195
<center><h1>Class type <a href="type_Unixqueue.event_system.html">Unixqueue.event_system</a></h1></center>
197
<pre><span id="TYPEevent_system"><span class="keyword">class type</span> event_system</span> = <code class="code">object</code> <a href="Unixqueue.event_system-c.html">..</a> <code class="code">end</code></pre>The <code class="code">event_system</code> manages events, handlers, resources, groups,
198
etc. It is now a class type, and you may invoke the operations directly
199
for the class. The operations are still available as functions (below).
202
A <b>resource</b> is an operation with an optional timer. The operation
203
describes the condition to watch for, and the timer defines the
204
maximum period of time for that. If the condition becomes true,
205
an <code class="code">Input_arrived</code>, <code class="code">Output_readiness</code>, or <code class="code">Out_of_band</code> event
206
will be triggered. If the timer expires, a <code class="code">Timeout</code> event will be
207
generated. After the event the resource remains active, and the
208
timeout period begins anew.
211
A resource is usually bound to a file descriptor. It is allowed
212
to watch the same descriptor for several different conditions,
213
but it is forbidden to watch the same descriptor for the same kind
214
of condition several times.
217
As a special case, the operation <code class="code">Wait</code> is not bound to a
218
file descriptor, but simply starts a timer. The argument of <code class="code">Wait</code>
219
can be used to distinguish between several timers that are active
223
<b>Event handlers</b> get the events one after the other, and
224
process them. When a handler is called for an event, there are
225
several possible reactions: (1) The handler can return normally,
226
which means that the event has been accepted, and will not be
227
passed to any other handler. (2) The handler can raise
228
<a href="Equeue.html#EXCEPTIONReject"><code class="code">Equeue.Reject</code></a>, which means that the handler cannot process
229
the event, and that another handler should get it. (3) The handler
230
can raise <a href="Equeue.html#EXCEPTIONTerminate"><code class="code">Equeue.Terminate</code></a> which means that the event has been
231
accepted, and that the handler is terminated (it will never be
232
called again). (4) The handler can raise <code class="code">Abort</code> which means that
233
the event is deferred, and that a special abort mechanism is
234
triggered (see the description for <code class="code">Abort</code> above), this is also
235
terminates the handler. The deferred event will again be processed
236
in the future. (5) The handler can raise any other exception.
237
This causes that the event is deferred, and the exception falls
238
through to the caller of <code class="code">run</code>.
241
<b>Groups</b> are used to simplify the association of events to
242
handlers, and to simplify the termination of handlers (see <code class="code">clear</code>).
243
If an event is associated with a group, only handlers associated with
244
the same group will get them.
247
There is a special <b>Close handler</b> which is useful to close file
248
descriptors no longer needed. It is called when all resources are
249
removed from the event system dealing with the file descriptor.
250
The close handler should close the descriptor. Note that close handlers
251
are only useful under certain circumstances.
254
<pre><span id="METHODnew_group"><span class="keyword">method</span> new_group</span> : <code class="type">unit -> <a href="Unixqueue.html#TYPEgroup">group</a></code></pre><pre><span id="METHODnew_wait_id"><span class="keyword">method</span> new_wait_id</span> : <code class="type">unit -> <a href="Unixqueue.html#TYPEwait_id">wait_id</a></code></pre><pre><span id="METHODexists_resource"><span class="keyword">method</span> exists_resource</span> : <code class="type"><a href="Unixqueue.html#TYPEoperation">operation</a> -> bool</code></pre><pre><span id="METHODadd_resource"><span class="keyword">method</span> add_resource</span> : <code class="type"><a href="Unixqueue.html#TYPEgroup">group</a> -> <a href="Unixqueue.html#TYPEoperation">operation</a> * float -> unit</code></pre><pre><span id="METHODadd_weak_resource"><span class="keyword">method</span> add_weak_resource</span> : <code class="type"><a href="Unixqueue.html#TYPEgroup">group</a> -> <a href="Unixqueue.html#TYPEoperation">operation</a> * float -> unit</code></pre><pre><span id="METHODadd_close_action"><span class="keyword">method</span> add_close_action</span> : <code class="type"><a href="Unixqueue.html#TYPEgroup">group</a> -> Unix.file_descr * (Unix.file_descr -> unit) -> unit</code></pre><pre><span id="METHODadd_abort_action"><span class="keyword">method</span> add_abort_action</span> : <code class="type"><a href="Unixqueue.html#TYPEgroup">group</a> -> (<a href="Unixqueue.html#TYPEgroup">group</a> -> exn -> unit) -> unit</code></pre><pre><span id="METHODremove_resource"><span class="keyword">method</span> remove_resource</span> : <code class="type"><a href="Unixqueue.html#TYPEgroup">group</a> -> <a href="Unixqueue.html#TYPEoperation">operation</a> -> unit</code></pre><pre><span id="METHODadd_handler"><span class="keyword">method</span> add_handler</span> : <code class="type"><a href="Unixqueue.html#TYPEgroup">group</a> -><br> (<a href="Unixqueue.event_system-c.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 id="METHODadd_event"><span class="keyword">method</span> add_event</span> : <code class="type"><a href="Unixqueue.html#TYPEevent">event</a> -> unit</code></pre><pre><span id="METHODclear"><span class="keyword">method</span> clear</span> : <code class="type"><a href="Unixqueue.html#TYPEgroup">group</a> -> unit</code></pre><pre><span id="METHODrun"><span class="keyword">method</span> run</span> : <code class="type">unit -> unit</code></pre><pre><span id="METHODis_running"><span class="keyword">method</span> is_running</span> : <code class="type">bool</code></pre><pre><span id="METHODwhen_blocking"><span class="keyword">method</span> when_blocking</span> : <code class="type">(unit -> unit) -> unit</code></pre></body></html>
b'\\ No newline at end of file'