summaryrefslogtreecommitdiff
path: root/vendor/thecodingmachine/safe/generated/sem.php
blob: 739e8b3897fc6c82a61c8cda109ea0f7c9c1d8db (plain)
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
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
<?php

namespace Safe;

use Safe\Exceptions\SemException;

/**
 * Checks whether the message queue key exists.
 *
 * @param int $key Queue key.
 * @throws SemException
 *
 */
function msg_queue_exists(int $key): void
{
    error_clear_last();
    $result = \msg_queue_exists($key);
    if ($result === false) {
        throw SemException::createFromPhpError();
    }
}


/**
 * msg_receive will receive the first message from the
 * specified queue of the type specified by
 * desiredmsgtype.
 *
 * @param resource $queue Message queue resource handle
 * @param int $desiredmsgtype If desiredmsgtype is 0, the message from the front
 * of the queue is returned. If desiredmsgtype is
 * greater than 0, then the first message of that type is returned.
 * If desiredmsgtype is less than 0, the first
 * message on the queue with a type less than or equal to the
 * absolute value of desiredmsgtype will be read.
 * If no messages match the criteria, your script will wait until a suitable
 * message arrives on the queue.  You can prevent the script from blocking
 * by specifying MSG_IPC_NOWAIT in the
 * flags parameter.
 * @param int|null $msgtype The type of the message that was received will be stored in this
 * parameter.
 * @param int $maxsize The maximum size of message to be accepted is specified by the
 * maxsize; if the message in the queue is larger
 * than this size the function will fail (unless you set
 * flags as described below).
 * @param mixed $message The received message will be stored in message,
 * unless there were errors receiving the message.
 * @param bool $unserialize If set to
 * TRUE, the message is treated as though it was serialized using the
 * same mechanism as the session module. The message will be unserialized
 * and then returned to your script. This allows you to easily receive
 * arrays or complex object structures from other PHP scripts, or if you
 * are using the WDDX serializer, from any WDDX compatible source.
 *
 * If unserialize is FALSE, the message will be
 * returned as a binary-safe string.
 * @param int $flags The optional flags allows you to pass flags to the
 * low-level msgrcv system call.  It defaults to 0, but you may specify one
 * or more of the following values (by adding or ORing them together).
 *
 * Flag values for msg_receive
 *
 *
 *
 * MSG_IPC_NOWAIT
 * If there are no messages of the
 * desiredmsgtype, return immediately and do not
 * wait.  The function will fail and return an integer value
 * corresponding to MSG_ENOMSG.
 *
 *
 *
 * MSG_EXCEPT
 * Using this flag in combination with a
 * desiredmsgtype greater than 0 will cause the
 * function to receive the first message that is not equal to
 * desiredmsgtype.
 *
 *
 * MSG_NOERROR
 *
 * If the message is longer than maxsize,
 * setting this flag will truncate the message to
 * maxsize and will not signal an error.
 *
 *
 *
 *
 *
 * @param int|null $errorcode If the function fails, the optional errorcode
 * will be set to the value of the system errno variable.
 * @throws SemException
 *
 */
function msg_receive($queue, int $desiredmsgtype, ?int &$msgtype, int $maxsize, &$message, bool $unserialize = true, int $flags = 0, ?int &$errorcode = null): void
{
    error_clear_last();
    $result = \msg_receive($queue, $desiredmsgtype, $msgtype, $maxsize, $message, $unserialize, $flags, $errorcode);
    if ($result === false) {
        throw SemException::createFromPhpError();
    }
}


/**
 * msg_remove_queue destroys the message queue specified
 * by the queue.  Only use this function when all
 * processes have finished working with the message queue and you need to
 * release the system resources held by it.
 *
 * @param resource $queue Message queue resource handle
 * @throws SemException
 *
 */
function msg_remove_queue($queue): void
{
    error_clear_last();
    $result = \msg_remove_queue($queue);
    if ($result === false) {
        throw SemException::createFromPhpError();
    }
}


/**
 * msg_send sends a message of type
 * msgtype (which MUST be greater than 0) to
 * the message queue specified by queue.
 *
 * @param resource $queue Message queue resource handle
 * @param int $msgtype The type of the message (MUST be greater than 0)
 * @param mixed $message The body of the message.
 *
 * If serialize set to FALSE is supplied,
 * MUST be of type: string, integer, float
 * or bool. In other case a warning will be issued.
 * @param bool $serialize The optional serialize controls how the
 * message is sent.  serialize
 * defaults to TRUE which means that the message is
 * serialized using the same mechanism as the session module before being
 * sent to the queue.  This allows complex arrays and objects to be sent to
 * other PHP scripts, or if you are using the WDDX serializer, to any WDDX
 * compatible client.
 * @param bool $blocking If the message is too large to fit in the queue, your script will wait
 * until another process reads messages from the queue and frees enough
 * space for your message to be sent.
 * This is called blocking; you can prevent blocking by setting the
 * optional blocking parameter to FALSE, in which
 * case msg_send will immediately return FALSE if the
 * message is too big for the queue, and set the optional
 * errorcode to MSG_EAGAIN,
 * indicating that you should try to send your message again a little
 * later on.
 * @param int|null $errorcode If the function fails, the optional errorcode will be set to the value of the system errno variable.
 * @throws SemException
 *
 */
function msg_send($queue, int $msgtype, $message, bool $serialize = true, bool $blocking = true, ?int &$errorcode = null): void
{
    error_clear_last();
    $result = \msg_send($queue, $msgtype, $message, $serialize, $blocking, $errorcode);
    if ($result === false) {
        throw SemException::createFromPhpError();
    }
}


/**
 * msg_set_queue allows you to change the values of the
 * msg_perm.uid, msg_perm.gid, msg_perm.mode and msg_qbytes fields of the
 * underlying message queue data structure.
 *
 * Changing the data structure will require that PHP be running as the same
 * user that created the queue, owns the queue (as determined by the
 * existing msg_perm.xxx fields), or be running with root privileges.
 * root privileges are required to raise the msg_qbytes values above the
 * system defined limit.
 *
 * @param resource $queue Message queue resource handle
 * @param array $data You specify the values you require by setting the value of the keys
 * that you require in the data array.
 * @throws SemException
 *
 */
function msg_set_queue($queue, array $data): void
{
    error_clear_last();
    $result = \msg_set_queue($queue, $data);
    if ($result === false) {
        throw SemException::createFromPhpError();
    }
}


/**
 * sem_acquire by default blocks (if necessary) until the
 * semaphore can be acquired.  A process attempting to acquire a semaphore which
 * it has already acquired will block forever if acquiring the semaphore would
 * cause its maximum number of semaphore to be exceeded.
 *
 * After processing a request, any semaphores acquired by the process but not
 * explicitly released will be released automatically and a warning will be
 * generated.
 *
 * @param resource $sem_identifier sem_identifier is a semaphore resource,
 * obtained from sem_get.
 * @param bool $nowait Specifies if the process shouldn't wait for the semaphore to be acquired.
 * If set to true, the call will return
 * false immediately if a semaphore cannot be immediately
 * acquired.
 * @throws SemException
 *
 */
function sem_acquire($sem_identifier, bool $nowait = false): void
{
    error_clear_last();
    $result = \sem_acquire($sem_identifier, $nowait);
    if ($result === false) {
        throw SemException::createFromPhpError();
    }
}


/**
 * sem_get returns an id that can be used to
 * access the System V semaphore with the given key.
 *
 * A second call to sem_get for the same key
 * will return a different semaphore identifier, but both
 * identifiers access the same underlying semaphore.
 *
 * If key is 0, a new private semaphore
 * is created for each call to sem_get.
 *
 * @param int $key
 * @param int $max_acquire The number of processes that can acquire the semaphore simultaneously
 * is set to max_acquire.
 * @param int $perm The semaphore permissions. Actually this value is
 * set only if the process finds it is the only process currently
 * attached to the semaphore.
 * @param int $auto_release Specifies if the semaphore should be automatically released on request
 * shutdown.
 * @return resource Returns a positive semaphore identifier on success.
 * @throws SemException
 *
 */
function sem_get(int $key, int $max_acquire = 1, int $perm = 0666, int $auto_release = 1)
{
    error_clear_last();
    $result = \sem_get($key, $max_acquire, $perm, $auto_release);
    if ($result === false) {
        throw SemException::createFromPhpError();
    }
    return $result;
}


/**
 * sem_release releases the semaphore if it
 * is currently acquired by the calling process, otherwise
 * a warning is generated.
 *
 * After releasing the semaphore, sem_acquire
 * may be called to re-acquire it.
 *
 * @param resource $sem_identifier A Semaphore resource handle as returned by
 * sem_get.
 * @throws SemException
 *
 */
function sem_release($sem_identifier): void
{
    error_clear_last();
    $result = \sem_release($sem_identifier);
    if ($result === false) {
        throw SemException::createFromPhpError();
    }
}


/**
 * sem_remove removes the given semaphore.
 *
 * After removing the semaphore, it is no longer accessible.
 *
 * @param resource $sem_identifier A semaphore resource identifier as returned
 * by sem_get.
 * @throws SemException
 *
 */
function sem_remove($sem_identifier): void
{
    error_clear_last();
    $result = \sem_remove($sem_identifier);
    if ($result === false) {
        throw SemException::createFromPhpError();
    }
}


/**
 * shm_put_var inserts or updates the
 * variable with the given
 * variable_key.
 *
 * Warnings (E_WARNING level) will be issued if
 * shm_identifier is not a valid SysV shared memory
 * index or if there was not enough shared memory remaining to complete your
 * request.
 *
 * @param resource $shm_identifier A shared memory resource handle as returned by
 * shm_attach
 * @param int $variable_key The variable key.
 * @param mixed $variable The variable. All variable types
 * that serialize supports may be used: generally
 * this means all types except for resources and some internal objects
 * that cannot be serialized.
 * @throws SemException
 *
 */
function shm_put_var($shm_identifier, int $variable_key, $variable): void
{
    error_clear_last();
    $result = \shm_put_var($shm_identifier, $variable_key, $variable);
    if ($result === false) {
        throw SemException::createFromPhpError();
    }
}


/**
 * Removes a variable with a given variable_key
 * and frees the occupied memory.
 *
 * @param resource $shm_identifier The shared memory identifier as returned by
 * shm_attach
 * @param int $variable_key The variable key.
 * @throws SemException
 *
 */
function shm_remove_var($shm_identifier, int $variable_key): void
{
    error_clear_last();
    $result = \shm_remove_var($shm_identifier, $variable_key);
    if ($result === false) {
        throw SemException::createFromPhpError();
    }
}


/**
 * shm_remove removes the shared memory
 * shm_identifier. All data will be destroyed.
 *
 * @param resource $shm_identifier The shared memory identifier as returned by
 * shm_attach
 * @throws SemException
 *
 */
function shm_remove($shm_identifier): void
{
    error_clear_last();
    $result = \shm_remove($shm_identifier);
    if ($result === false) {
        throw SemException::createFromPhpError();
    }
}