30
40
<link title="Netcgi1_compat" rel="Chapter" href="Netcgi1_compat.html">
31
41
<link title="Netcgi_test" rel="Chapter" href="Netcgi_test.html">
32
42
<link title="Netcgi_porting" rel="Chapter" href="Netcgi_porting.html">
33
<link title="Netcgi_plex" rel="Chapter" href="Netcgi_plex.html">
43
<link title="Http_client_conncache" rel="Chapter" href="Http_client_conncache.html">
34
44
<link title="Http_client" rel="Chapter" href="Http_client.html">
35
45
<link title="Telnet_client" rel="Chapter" href="Telnet_client.html">
36
46
<link title="Ftp_data_endpoint" rel="Chapter" href="Ftp_data_endpoint.html">
37
47
<link title="Ftp_client" rel="Chapter" href="Ftp_client.html">
48
<link title="Http_fs" rel="Chapter" href="Http_fs.html">
49
<link title="Ftp_fs" rel="Chapter" href="Ftp_fs.html">
50
<link title="Netclient_tut" rel="Chapter" href="Netclient_tut.html">
51
<link title="Netgssapi" rel="Chapter" href="Netgssapi.html">
38
52
<link title="Nethttpd_types" rel="Chapter" href="Nethttpd_types.html">
39
53
<link title="Nethttpd_kernel" rel="Chapter" href="Nethttpd_kernel.html">
40
54
<link title="Nethttpd_reactor" rel="Chapter" href="Nethttpd_reactor.html">
41
55
<link title="Nethttpd_engine" rel="Chapter" href="Nethttpd_engine.html">
42
56
<link title="Nethttpd_services" rel="Chapter" href="Nethttpd_services.html">
43
57
<link title="Nethttpd_plex" rel="Chapter" href="Nethttpd_plex.html">
58
<link title="Nethttpd_util" rel="Chapter" href="Nethttpd_util.html">
44
59
<link title="Nethttpd_intro" rel="Chapter" href="Nethttpd_intro.html">
60
<link title="Netmech_scram" rel="Chapter" href="Netmech_scram.html">
61
<link title="Netmech_scram_gssapi" rel="Chapter" href="Netmech_scram_gssapi.html">
62
<link title="Netmcore" rel="Chapter" href="Netmcore.html">
63
<link title="Netmcore_camlbox" rel="Chapter" href="Netmcore_camlbox.html">
64
<link title="Netmcore_mempool" rel="Chapter" href="Netmcore_mempool.html">
65
<link title="Netmcore_heap" rel="Chapter" href="Netmcore_heap.html">
66
<link title="Netmcore_ref" rel="Chapter" href="Netmcore_ref.html">
67
<link title="Netmcore_array" rel="Chapter" href="Netmcore_array.html">
68
<link title="Netmcore_sem" rel="Chapter" href="Netmcore_sem.html">
69
<link title="Netmcore_mutex" rel="Chapter" href="Netmcore_mutex.html">
70
<link title="Netmcore_condition" rel="Chapter" href="Netmcore_condition.html">
71
<link title="Netmcore_queue" rel="Chapter" href="Netmcore_queue.html">
72
<link title="Netmcore_buffer" rel="Chapter" href="Netmcore_buffer.html">
73
<link title="Netmcore_matrix" rel="Chapter" href="Netmcore_matrix.html">
74
<link title="Netmcore_hashtbl" rel="Chapter" href="Netmcore_hashtbl.html">
75
<link title="Netmcore_process" rel="Chapter" href="Netmcore_process.html">
76
<link title="Netmcore_tut" rel="Chapter" href="Netmcore_tut.html">
45
77
<link title="Netplex_types" rel="Chapter" href="Netplex_types.html">
46
78
<link title="Netplex_mp" rel="Chapter" href="Netplex_mp.html">
47
79
<link title="Netplex_mt" rel="Chapter" href="Netplex_mt.html">
78
116
<link title="Nethtml" rel="Chapter" href="Nethtml.html">
79
117
<link title="Netstring_str" rel="Chapter" href="Netstring_str.html">
80
118
<link title="Netstring_pcre" rel="Chapter" href="Netstring_pcre.html">
81
<link title="Netstring_mt" rel="Chapter" href="Netstring_mt.html">
82
119
<link title="Netmappings" rel="Chapter" href="Netmappings.html">
83
120
<link title="Netaux" rel="Chapter" href="Netaux.html">
84
121
<link title="Nethttp" rel="Chapter" href="Nethttp.html">
122
<link title="Netpagebuffer" rel="Chapter" href="Netpagebuffer.html">
123
<link title="Netfs" rel="Chapter" href="Netfs.html">
124
<link title="Netglob" rel="Chapter" href="Netglob.html">
125
<link title="Netauth" rel="Chapter" href="Netauth.html">
126
<link title="Netsockaddr" rel="Chapter" href="Netsockaddr.html">
127
<link title="Netnumber" rel="Chapter" href="Netnumber.html">
128
<link title="Rtypes" rel="Chapter" href="Rtypes.html">
129
<link title="Xdr_mstring" rel="Chapter" href="Xdr_mstring.html">
130
<link title="Xdr" rel="Chapter" href="Xdr.html">
131
<link title="Netcompression" rel="Chapter" href="Netcompression.html">
85
132
<link title="Netchannels_tut" rel="Chapter" href="Netchannels_tut.html">
86
133
<link title="Netmime_tut" rel="Chapter" href="Netmime_tut.html">
87
134
<link title="Netsendmail_tut" rel="Chapter" href="Netsendmail_tut.html">
88
135
<link title="Netulex_tut" rel="Chapter" href="Netulex_tut.html">
89
136
<link title="Neturl_tut" rel="Chapter" href="Neturl_tut.html">
90
137
<link title="Netsys" rel="Chapter" href="Netsys.html">
138
<link title="Netsys_posix" rel="Chapter" href="Netsys_posix.html">
139
<link title="Netsys_pollset" rel="Chapter" href="Netsys_pollset.html">
140
<link title="Netlog" rel="Chapter" href="Netlog.html">
141
<link title="Netexn" rel="Chapter" href="Netexn.html">
142
<link title="Netsys_win32" rel="Chapter" href="Netsys_win32.html">
143
<link title="Netsys_pollset_posix" rel="Chapter" href="Netsys_pollset_posix.html">
144
<link title="Netsys_pollset_win32" rel="Chapter" href="Netsys_pollset_win32.html">
145
<link title="Netsys_pollset_generic" rel="Chapter" href="Netsys_pollset_generic.html">
146
<link title="Netsys_signal" rel="Chapter" href="Netsys_signal.html">
147
<link title="Netsys_oothr" rel="Chapter" href="Netsys_oothr.html">
148
<link title="Netsys_xdr" rel="Chapter" href="Netsys_xdr.html">
149
<link title="Netsys_rng" rel="Chapter" href="Netsys_rng.html">
150
<link title="Netsys_types" rel="Chapter" href="Netsys_types.html">
151
<link title="Netsys_mem" rel="Chapter" href="Netsys_mem.html">
152
<link title="Netsys_tmp" rel="Chapter" href="Netsys_tmp.html">
153
<link title="Netgzip" rel="Chapter" href="Netgzip.html">
91
154
<link title="Netpop" rel="Chapter" href="Netpop.html">
92
155
<link title="Rpc_auth_dh" rel="Chapter" href="Rpc_auth_dh.html">
93
156
<link title="Rpc_key_service" rel="Chapter" href="Rpc_key_service.html">
94
157
<link title="Rpc_time" rel="Chapter" href="Rpc_time.html">
95
158
<link title="Rpc_auth_local" rel="Chapter" href="Rpc_auth_local.html">
96
<link title="Rtypes" rel="Chapter" href="Rtypes.html">
97
<link title="Xdr" rel="Chapter" href="Xdr.html">
159
<link title="Rpc_ssl" rel="Chapter" href="Rpc_ssl.html">
160
<link title="Rpc_xti_client" rel="Chapter" href="Rpc_xti_client.html">
98
161
<link title="Rpc" rel="Chapter" href="Rpc.html">
99
162
<link title="Rpc_program" rel="Chapter" href="Rpc_program.html">
163
<link title="Rpc_util" rel="Chapter" href="Rpc_util.html">
100
164
<link title="Rpc_portmapper_aux" rel="Chapter" href="Rpc_portmapper_aux.html">
101
165
<link title="Rpc_packer" rel="Chapter" href="Rpc_packer.html">
102
166
<link title="Rpc_transport" rel="Chapter" href="Rpc_transport.html">
106
170
<link title="Rpc_portmapper" rel="Chapter" href="Rpc_portmapper.html">
107
171
<link title="Rpc_server" rel="Chapter" href="Rpc_server.html">
108
172
<link title="Rpc_auth_sys" rel="Chapter" href="Rpc_auth_sys.html">
173
<link title="Rpc_auth_gssapi" rel="Chapter" href="Rpc_auth_gssapi.html">
174
<link title="Rpc_proxy" rel="Chapter" href="Rpc_proxy.html">
109
175
<link title="Rpc_intro" rel="Chapter" href="Rpc_intro.html">
110
176
<link title="Rpc_mapping_ref" rel="Chapter" href="Rpc_mapping_ref.html">
111
<link title="Rpc_ssl" rel="Chapter" href="Rpc_ssl.html">
112
<link title="Rpc_xti_client" rel="Chapter" href="Rpc_xti_client.html">
177
<link title="Rpc_intro_gss" rel="Chapter" href="Rpc_intro_gss.html">
113
178
<link title="Shell_sys" rel="Chapter" href="Shell_sys.html">
114
179
<link title="Shell" rel="Chapter" href="Shell.html">
115
180
<link title="Shell_uq" rel="Chapter" href="Shell_uq.html">
116
<link title="Shell_mt" rel="Chapter" href="Shell_mt.html">
181
<link title="Shell_fs" rel="Chapter" href="Shell_fs.html">
117
182
<link title="Shell_intro" rel="Chapter" href="Shell_intro.html">
118
<link title="Netsmtp" rel="Chapter" href="Netsmtp.html"><title>Ocamlnet 2 Reference Manual : Uq_engines</title>
183
<link title="Netsmtp" rel="Chapter" href="Netsmtp.html">
184
<link title="Intro" rel="Chapter" href="Intro.html">
185
<link title="Platform" rel="Chapter" href="Platform.html">
186
<link title="Foreword" rel="Chapter" href="Foreword.html">
187
<link title="Ipv6" rel="Chapter" href="Ipv6.html"><title>Ocamlnet 3 Reference Manual : Uq_engines</title>
121
190
<code class="code"><span class="keyword">sig</span><br>
122
191
<span class="keyword">exception</span> <span class="constructor">Closed_channel</span><br>
123
192
<span class="keyword">exception</span> <span class="constructor">Broken_communication</span><br>
124
193
<span class="keyword">exception</span> <span class="constructor">Watchdog_timeout</span><br>
194
<span class="keyword">exception</span> <span class="constructor">Timeout</span><br>
125
195
<span class="keyword">exception</span> <span class="constructor">Addressing_method_not_supported</span><br>
126
196
<span class="keyword">exception</span> <span class="constructor">Cancelled</span><br>
127
197
<span class="keyword">type</span> <span class="keywordsign">'</span>a engine_state =<br>
128
198
[ <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>
199
<span class="keyword">type</span> <span class="keywordsign">'</span>a final_state = [ <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 ]<br>
200
<span class="keyword">val</span> string_of_state : <span class="keywordsign">'</span>a <span class="constructor">Uq_engines</span>.engine_state <span class="keywordsign">-></span> string<br>
129
201
<span class="keyword">class</span> <span class="keyword">type</span> [<span class="keywordsign">'</span>a] engine =<br>
130
202
<span class="keyword">object</span><br>
131
203
<span class="keyword">method</span> abort : unit <span class="keywordsign">-></span> unit<br>
133
205
<span class="keyword">method</span> request_notification : (unit <span class="keywordsign">-></span> bool) <span class="keywordsign">-></span> unit<br>
134
206
<span class="keyword">method</span> state : <span class="keywordsign">'</span>a <span class="constructor">Uq_engines</span>.engine_state<br>
135
207
<span class="keyword">end</span><br>
208
<span class="keyword">class</span> [<span class="keywordsign">'</span>a] delegate_engine : <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] engine<br>
136
209
<span class="keyword">val</span> when_state :<br>
137
210
?is_done:(<span class="keywordsign">'</span>a <span class="keywordsign">-></span> unit) <span class="keywordsign">-></span><br>
138
211
?is_error:(exn <span class="keywordsign">-></span> unit) <span class="keywordsign">-></span><br>
139
?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>
212
?is_aborted:(unit <span class="keywordsign">-></span> unit) <span class="keywordsign">-></span><br>
213
?is_progressing:(int <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>
214
<span class="keyword">class</span> [<span class="keywordsign">'</span>a] signal_engine :<br>
215
<span class="constructor">Unixqueue</span>.event_system <span class="keywordsign">-></span><br>
216
<span class="keyword">object</span><br>
217
<span class="keyword">method</span> abort : unit <span class="keywordsign">-></span> unit<br>
218
<span class="keyword">method</span> event_system : <span class="constructor">Unixqueue</span>.event_system<br>
219
<span class="keyword">method</span> request_notification : (unit <span class="keywordsign">-></span> bool) <span class="keywordsign">-></span> unit<br>
220
<span class="keyword">method</span> signal : <span class="keywordsign">'</span>a <span class="constructor">Uq_engines</span>.final_state <span class="keywordsign">-></span> unit<br>
221
<span class="keyword">method</span> state : <span class="keywordsign">'</span>a engine_state<br>
222
<span class="keyword">end</span><br>
223
<span class="keyword">val</span> signal_engine :<br>
224
<span class="constructor">Unixqueue</span>.event_system <span class="keywordsign">-></span><br>
225
<span class="keywordsign">'</span>a <span class="constructor">Uq_engines</span>.engine * (<span class="keywordsign">'</span>a <span class="constructor">Uq_engines</span>.final_state <span class="keywordsign">-></span> unit)<br>
140
226
<span class="keyword">class</span> [<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>b] map_engine :<br>
141
227
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>
142
228
?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>
143
229
?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>
144
<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>
230
?propagate_working:bool <span class="keywordsign">-></span> <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>
231
<span class="keyword">val</span> map_engine :<br>
232
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>
233
?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>
234
?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>
235
?propagate_working:bool <span class="keywordsign">-></span> <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="constructor">Uq_engines</span>.engine<br>
236
<span class="keyword">class</span> [<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>b] fmap_engine :<br>
237
<span class="keywordsign">'</span>a <span class="keywordsign">#</span><span class="constructor">Uq_engines</span>.engine <span class="keywordsign">-></span><br>
238
(<span class="keywordsign">'</span>a <span class="constructor">Uq_engines</span>.final_state <span class="keywordsign">-></span> <span class="keywordsign">'</span>b <span class="constructor">Uq_engines</span>.final_state) <span class="keywordsign">-></span> [<span class="keywordsign">'</span>b] engine<br>
239
<span class="keyword">val</span> fmap_engine :<br>
240
<span class="keywordsign">'</span>a <span class="keywordsign">#</span><span class="constructor">Uq_engines</span>.engine <span class="keywordsign">-></span><br>
241
(<span class="keywordsign">'</span>a <span class="constructor">Uq_engines</span>.final_state <span class="keywordsign">-></span> <span class="keywordsign">'</span>b <span class="constructor">Uq_engines</span>.final_state) <span class="keywordsign">-></span><br>
242
<span class="keywordsign">'</span>b <span class="constructor">Uq_engines</span>.engine<br>
243
<span class="keyword">class</span> [<span class="keywordsign">'</span>a] meta_engine :<br>
244
<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="constructor">Uq_engines</span>.final_state] engine<br>
245
<span class="keyword">val</span> meta_engine :<br>
246
<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="constructor">Uq_engines</span>.final_state <span class="constructor">Uq_engines</span>.engine<br>
145
247
<span class="keyword">class</span> [<span class="keywordsign">'</span>a] epsilon_engine :<br>
146
248
<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>
249
<span class="keyword">val</span> epsilon_engine :<br>
250
<span class="keywordsign">'</span>a <span class="constructor">Uq_engines</span>.engine_state <span class="keywordsign">-></span><br>
251
<span class="constructor">Unixqueue</span>.event_system <span class="keywordsign">-></span> <span class="keywordsign">'</span>a <span class="constructor">Uq_engines</span>.engine<br>
147
252
<span class="keyword">class</span> [<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>b] seq_engine :<br>
148
253
<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>
254
<span class="keyword">val</span> seq_engine :<br>
255
<span class="keywordsign">'</span>a <span class="keywordsign">#</span><span class="constructor">Uq_engines</span>.engine <span class="keywordsign">-></span><br>
256
(<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 <span class="constructor">Uq_engines</span>.engine<br>
257
<span class="keyword">class</span> [<span class="keywordsign">'</span>a] stream_seq_engine :<br>
258
<span class="keywordsign">'</span>a <span class="keywordsign">-></span><br>
259
(<span class="keywordsign">'</span>a <span class="keywordsign">-></span> <span class="keywordsign">'</span>a <span class="keywordsign">#</span><span class="constructor">Uq_engines</span>.engine) <span class="constructor">Stream</span>.t <span class="keywordsign">-></span><br>
260
<span class="constructor">Unixqueue</span>.event_system <span class="keywordsign">-></span> [<span class="keywordsign">'</span>a] engine<br>
261
<span class="keyword">val</span> stream_seq_engine :<br>
262
<span class="keywordsign">'</span>a <span class="keywordsign">-></span><br>
263
(<span class="keywordsign">'</span>a <span class="keywordsign">-></span> <span class="keywordsign">'</span>a <span class="keywordsign">#</span><span class="constructor">Uq_engines</span>.engine) <span class="constructor">Stream</span>.t <span class="keywordsign">-></span><br>
264
<span class="constructor">Unixqueue</span>.event_system <span class="keywordsign">-></span> <span class="keywordsign">'</span>a <span class="constructor">Uq_engines</span>.engine<br>
149
265
<span class="keyword">class</span> [<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>b] sync_engine :<br>
150
266
<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>
267
<span class="keyword">val</span> sync_engine :<br>
268
<span class="keywordsign">'</span>a <span class="keywordsign">#</span><span class="constructor">Uq_engines</span>.engine <span class="keywordsign">-></span><br>
269
<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) <span class="constructor">Uq_engines</span>.engine<br>
270
<span class="keyword">class</span> [<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>b] msync_engine :<br>
271
<span class="keywordsign">'</span>a <span class="keywordsign">#</span><span class="constructor">Uq_engines</span>.engine list <span class="keywordsign">-></span><br>
272
(<span class="keywordsign">'</span>a <span class="keywordsign">-></span> <span class="keywordsign">'</span>b <span class="keywordsign">-></span> <span class="keywordsign">'</span>b) <span class="keywordsign">-></span> <span class="keywordsign">'</span>b <span class="keywordsign">-></span> <span class="constructor">Unixqueue</span>.event_system <span class="keywordsign">-></span> [<span class="keywordsign">'</span>b] engine<br>
273
<span class="keyword">val</span> msync_engine :<br>
274
<span class="keywordsign">'</span>a <span class="keywordsign">#</span><span class="constructor">Uq_engines</span>.engine list <span class="keywordsign">-></span><br>
275
(<span class="keywordsign">'</span>a <span class="keywordsign">-></span> <span class="keywordsign">'</span>b <span class="keywordsign">-></span> <span class="keywordsign">'</span>b) <span class="keywordsign">-></span> <span class="keywordsign">'</span>b <span class="keywordsign">-></span> <span class="constructor">Unixqueue</span>.event_system <span class="keywordsign">-></span> <span class="keywordsign">'</span>b <span class="constructor">Uq_engines</span>.engine<br>
276
<span class="keyword">class</span> [<span class="keywordsign">'</span>a] delay_engine :<br>
277
float <span class="keywordsign">-></span><br>
278
(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> <span class="constructor">Unixqueue</span>.event_system <span class="keywordsign">-></span> [<span class="keywordsign">'</span>a] engine<br>
279
<span class="keyword">val</span> delay_engine :<br>
280
float <span class="keywordsign">-></span><br>
281
(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><br>
282
<span class="constructor">Unixqueue</span>.event_system <span class="keywordsign">-></span> <span class="keywordsign">'</span>a <span class="constructor">Uq_engines</span>.engine<br>
283
<span class="keyword">class</span> [<span class="keywordsign">'</span>a] timeout_engine :<br>
284
float <span class="keywordsign">-></span> exn <span class="keywordsign">-></span> <span class="keywordsign">'</span>a <span class="constructor">Uq_engines</span>.engine <span class="keywordsign">-></span> [<span class="keywordsign">'</span>a] engine<br>
285
<span class="keyword">val</span> timeout_engine :<br>
286
float <span class="keywordsign">-></span> exn <span class="keywordsign">-></span> <span class="keywordsign">'</span>a <span class="constructor">Uq_engines</span>.engine <span class="keywordsign">-></span> <span class="keywordsign">'</span>a <span class="constructor">Uq_engines</span>.engine<br>
287
<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>
288
<span class="keyword">val</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 <span class="constructor">Uq_engines</span>.engine<br>
289
<span class="keyword">class</span> <span class="keyword">type</span> [<span class="keywordsign">'</span>a] serializer_t =<br>
290
<span class="keyword">object</span><br>
291
<span class="keyword">method</span> serialized :<br>
292
(<span class="constructor">Unixqueue</span>.event_system <span class="keywordsign">-></span> <span class="keywordsign">'</span>a <span class="constructor">Uq_engines</span>.engine) <span class="keywordsign">-></span><br>
293
<span class="keywordsign">'</span>a <span class="constructor">Uq_engines</span>.engine<br>
294
<span class="keyword">end</span><br>
295
<span class="keyword">class</span> [<span class="keywordsign">'</span>a] serializer : <span class="constructor">Unixqueue</span>.event_system <span class="keywordsign">-></span> [<span class="keywordsign">'</span>a] serializer_t<br>
296
<span class="keyword">val</span> serializer : <span class="constructor">Unixqueue</span>.event_system <span class="keywordsign">-></span> <span class="keywordsign">'</span>a <span class="constructor">Uq_engines</span>.serializer_t<br>
297
<span class="keyword">class</span> <span class="keyword">type</span> [<span class="keywordsign">'</span>a] prioritizer_t =<br>
298
<span class="keyword">object</span><br>
299
<span class="keyword">method</span> prioritized :<br>
300
(<span class="constructor">Unixqueue</span>.event_system <span class="keywordsign">-></span> <span class="keywordsign">'</span>a <span class="constructor">Uq_engines</span>.engine) <span class="keywordsign">-></span><br>
301
int <span class="keywordsign">-></span> <span class="keywordsign">'</span>a <span class="constructor">Uq_engines</span>.engine<br>
302
<span class="keyword">end</span><br>
303
<span class="keyword">class</span> [<span class="keywordsign">'</span>a] prioritizer : <span class="constructor">Unixqueue</span>.event_system <span class="keywordsign">-></span> [<span class="keywordsign">'</span>a] prioritizer_t<br>
304
<span class="keyword">val</span> prioritizer : <span class="constructor">Unixqueue</span>.event_system <span class="keywordsign">-></span> <span class="keywordsign">'</span>a <span class="constructor">Uq_engines</span>.prioritizer_t<br>
305
<span class="keyword">class</span> <span class="keyword">type</span> [<span class="keywordsign">'</span>a] cache_t =<br>
306
<span class="keyword">object</span><br>
307
<span class="keyword">method</span> abort : unit <span class="keywordsign">-></span> unit<br>
308
<span class="keyword">method</span> get_engine : unit <span class="keywordsign">-></span> <span class="keywordsign">'</span>a <span class="constructor">Uq_engines</span>.engine<br>
309
<span class="keyword">method</span> get_opt : unit <span class="keywordsign">-></span> <span class="keywordsign">'</span>a option<br>
310
<span class="keyword">method</span> invalidate : unit <span class="keywordsign">-></span> unit<br>
311
<span class="keyword">method</span> put : <span class="keywordsign">'</span>a <span class="keywordsign">-></span> unit<br>
312
<span class="keyword">end</span><br>
313
<span class="keyword">class</span> [<span class="keywordsign">'</span>a] cache :<br>
314
(<span class="constructor">Unixqueue</span>.event_system <span class="keywordsign">-></span> <span class="keywordsign">'</span>a <span class="constructor">Uq_engines</span>.engine) <span class="keywordsign">-></span><br>
315
<span class="constructor">Unixqueue</span>.event_system <span class="keywordsign">-></span> [<span class="keywordsign">'</span>a] cache_t<br>
316
<span class="keyword">val</span> cache :<br>
317
(<span class="constructor">Unixqueue</span>.event_system <span class="keywordsign">-></span> <span class="keywordsign">'</span>a <span class="constructor">Uq_engines</span>.engine) <span class="keywordsign">-></span><br>
318
<span class="constructor">Unixqueue</span>.event_system <span class="keywordsign">-></span> <span class="keywordsign">'</span>a <span class="constructor">Uq_engines</span>.cache_t<br>
319
<span class="keyword">class</span> [<span class="keywordsign">'</span>a] engine_mixin :<br>
320
<span class="keywordsign">'</span>a <span class="constructor">Uq_engines</span>.engine_state <span class="keywordsign">-></span><br>
321
<span class="constructor">Unixqueue</span>.event_system <span class="keywordsign">-></span><br>
322
<span class="keyword">object</span><br>
323
<span class="keyword">method</span> event_system : <span class="constructor">Unixqueue</span>.event_system<br>
324
<span class="keyword">method</span> <span class="keyword">private</span> notify : unit <span class="keywordsign">-></span> unit<br>
325
<span class="keyword">method</span> request_notification : (unit <span class="keywordsign">-></span> bool) <span class="keywordsign">-></span> unit<br>
326
<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>
327
<span class="keyword">method</span> state : <span class="keywordsign">'</span>a <span class="constructor">Uq_engines</span>.engine_state<br>
328
<span class="keyword">end</span><br>
329
<span class="keyword">module</span> <span class="constructor">Operators</span> :<br>
330
<span class="keyword">sig</span><br>
331
<span class="keyword">val</span> ( ++ ) :<br>
332
<span class="keywordsign">'</span>a <span class="keywordsign">#</span><span class="constructor">Uq_engines</span>.engine <span class="keywordsign">-></span><br>
333
(<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 <span class="constructor">Uq_engines</span>.engine<br>
334
<span class="keyword">val</span> ( >> ) :<br>
335
<span class="keywordsign">'</span>a <span class="keywordsign">#</span><span class="constructor">Uq_engines</span>.engine <span class="keywordsign">-></span><br>
336
(<span class="keywordsign">'</span>a <span class="constructor">Uq_engines</span>.final_state <span class="keywordsign">-></span> <span class="keywordsign">'</span>b <span class="constructor">Uq_engines</span>.final_state) <span class="keywordsign">-></span><br>
337
<span class="keywordsign">'</span>b <span class="constructor">Uq_engines</span>.engine<br>
338
<span class="keyword">val</span> eps_e :<br>
339
<span class="keywordsign">'</span>a <span class="constructor">Uq_engines</span>.engine_state <span class="keywordsign">-></span><br>
340
<span class="constructor">Unixqueue</span>.event_system <span class="keywordsign">-></span> <span class="keywordsign">'</span>a <span class="constructor">Uq_engines</span>.engine<br>
341
<span class="keyword">end</span><br>
151
342
<span class="keyword">class</span> poll_engine :<br>
152
343
?extra_match:(exn <span class="keywordsign">-></span> bool) <span class="keywordsign">-></span><br>
153
344
(<span class="constructor">Unixqueue</span>.operation * float) list <span class="keywordsign">-></span><br>
238
430
<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>
239
431
<span class="keyword">class</span> copier :<br>
240
432
<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>
433
<span class="keyword">type</span> inetspec =<br>
434
[ <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>
435
<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>
241
436
<span class="keyword">type</span> sockspec =<br>
242
437
[ <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>
243
438
<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>
244
439
<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>
440
<span class="keyword">val</span> sockspec_of_sockaddr :<br>
441
<span class="constructor">Unix</span>.socket_type <span class="keywordsign">-></span> <span class="constructor">Unix</span>.sockaddr <span class="keywordsign">-></span> <span class="constructor">Uq_engines</span>.sockspec<br>
442
<span class="keyword">val</span> sockspec_of_socksymbol :<br>
443
<span class="constructor">Unix</span>.socket_type <span class="keywordsign">-></span> <span class="constructor">Netsockaddr</span>.socksymbol <span class="keywordsign">-></span> <span class="constructor">Uq_engines</span>.sockspec<br>
245
444
<span class="keyword">type</span> connect_address =<br>
246
445
[ <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>
247
<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>
446
<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>
447
<span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W32_pipe</span> <span class="keyword">of</span> <span class="constructor">Netsys_win32</span>.pipe_mode * string ]<br>
248
448
<span class="keyword">and</span> connect_options = { conn_bind : <span class="constructor">Uq_engines</span>.sockspec option; }<br>
249
449
<span class="keyword">val</span> default_connect_options : <span class="constructor">Uq_engines</span>.connect_options<br>
250
450
<span class="keyword">type</span> connect_status =<br>
251
451
[ <span class="keywordsign">`</span><span class="constructor">Command</span> <span class="keyword">of</span> <span class="constructor">Unix</span>.file_descr * int<br>
252
<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>
452
<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>
453
<span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W32_pipe</span> <span class="keyword">of</span> <span class="constructor">Unix</span>.file_descr ]<br>
454
<span class="keyword">val</span> client_endpoint : <span class="constructor">Uq_engines</span>.connect_status <span class="keywordsign">-></span> <span class="constructor">Unix</span>.file_descr<br>
253
455
<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>
456
<span class="keyword">class</span> <span class="keyword">type</span> client_endpoint_connector =<br>
457
<span class="keyword">object</span><br>
458
<span class="keyword">method</span> connect :<br>
459
<span class="constructor">Uq_engines</span>.connect_address <span class="keywordsign">-></span><br>
460
<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>
461
<span class="keyword">end</span><br>
462
<span class="keyword">class</span> <span class="keyword">type</span> client_socket_connector = client_endpoint_connector<br>
463
<span class="keyword">val</span> connector :<br>
464
?proxy:<span class="keywordsign">#</span><span class="constructor">Uq_engines</span>.client_socket_connector <span class="keywordsign">-></span><br>
465
<span class="constructor">Uq_engines</span>.connect_address <span class="keywordsign">-></span><br>
466
<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>
254
467
<span class="keyword">type</span> listen_address =<br>
255
[ <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>
468
[ <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>
469
<span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W32_pipe</span> <span class="keyword">of</span><br>
470
<span class="constructor">Netsys_win32</span>.pipe_mode * string * <span class="constructor">Uq_engines</span>.listen_options ]<br>
256
471
<span class="keyword">and</span> listen_options = { lstn_backlog : int; lstn_reuseaddr : bool; }<br>
257
472
<span class="keyword">val</span> default_listen_options : <span class="constructor">Uq_engines</span>.listen_options<br>
258
<span class="keyword">class</span> <span class="keyword">type</span> client_socket_connector =<br>
259
<span class="keyword">object</span><br>
260
<span class="keyword">method</span> connect :<br>
261
<span class="constructor">Uq_engines</span>.connect_address <span class="keywordsign">-></span><br>
262
<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>
263
<span class="keyword">end</span><br>
264
<span class="keyword">class</span> <span class="keyword">type</span> server_socket_acceptor =<br>
473
<span class="keyword">class</span> <span class="keyword">type</span> server_endpoint_acceptor =<br>
265
474
<span class="keyword">object</span><br>
266
475
<span class="keyword">method</span> accept :<br>
267
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>
476
unit <span class="keywordsign">-></span><br>
477
(<span class="constructor">Unix</span>.file_descr * <span class="constructor">Uq_engines</span>.inetspec option) <span class="constructor">Uq_engines</span>.engine<br>
268
478
<span class="keyword">method</span> multiple_connections : bool<br>
269
<span class="keyword">method</span> server_address : <span class="constructor">Uq_engines</span>.sockspec<br>
479
<span class="keyword">method</span> server_address : <span class="constructor">Uq_engines</span>.connect_address<br>
270
480
<span class="keyword">method</span> shut_down : unit <span class="keywordsign">-></span> unit<br>
271
481
<span class="keyword">end</span><br>
482
<span class="keyword">class</span> <span class="keyword">type</span> server_socket_acceptor = server_endpoint_acceptor<br>
483
<span class="keyword">class</span> direct_acceptor :<br>
484
?close_on_shutdown:bool <span class="keywordsign">-></span><br>
485
?preclose:(unit <span class="keywordsign">-></span> unit) <span class="keywordsign">-></span><br>
486
<span class="constructor">Unix</span>.file_descr <span class="keywordsign">-></span> <span class="constructor">Unixqueue</span>.event_system <span class="keywordsign">-></span> server_endpoint_acceptor<br>
272
487
<span class="keyword">class</span> direct_socket_acceptor :<br>
273
<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>
274
<span class="keyword">class</span> <span class="keyword">type</span> server_socket_listener =<br>
488
<span class="constructor">Unix</span>.file_descr <span class="keywordsign">-></span> <span class="constructor">Unixqueue</span>.event_system <span class="keywordsign">-></span> server_endpoint_acceptor<br>
489
<span class="keyword">class</span> <span class="keyword">type</span> server_endpoint_listener =<br>
275
490
<span class="keyword">object</span><br>
276
491
<span class="keyword">method</span> listen :<br>
277
492
<span class="constructor">Uq_engines</span>.listen_address <span class="keywordsign">-></span><br>
278
493
<span class="constructor">Unixqueue</span>.event_system <span class="keywordsign">-></span><br>
279
<span class="constructor">Uq_engines</span>.server_socket_acceptor <span class="constructor">Uq_engines</span>.engine<br>
494
<span class="constructor">Uq_engines</span>.server_endpoint_acceptor <span class="constructor">Uq_engines</span>.engine<br>
280
495
<span class="keyword">end</span><br>
281
<span class="keyword">val</span> connector :<br>
282
?proxy:<span class="keywordsign">#</span><span class="constructor">Uq_engines</span>.client_socket_connector <span class="keywordsign">-></span><br>
283
<span class="constructor">Uq_engines</span>.connect_address <span class="keywordsign">-></span><br>
284
<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>
496
<span class="keyword">class</span> <span class="keyword">type</span> server_socket_listener = server_endpoint_listener<br>
285
497
<span class="keyword">val</span> listener :<br>
286
498
?proxy:<span class="keywordsign">#</span><span class="constructor">Uq_engines</span>.server_socket_listener <span class="keywordsign">-></span><br>
287
499
<span class="constructor">Uq_engines</span>.listen_address <span class="keywordsign">-></span><br>