golden hour
/usr/include
⬆️ Go Up
Upload
File/Folder
Size
Actions
FlexLexer.h
6.07 KB
Del
OK
GL
-
Del
OK
KF5
-
Del
OK
X11
-
Del
OK
_G_config.h
1.26 KB
Del
OK
a.out.h
4.25 KB
Del
OK
aio.h
7.27 KB
Del
OK
aliases.h
2 KB
Del
OK
alloca.h
1.19 KB
Del
OK
apache2
-
Del
OK
ar.h
1.68 KB
Del
OK
argp.h
24.75 KB
Del
OK
argz.h
6.96 KB
Del
OK
arpa
-
Del
OK
asm
-
Del
OK
asm-generic
-
Del
OK
assert.h
3.52 KB
Del
OK
autosprintf.h
2.33 KB
Del
OK
bind9
-
Del
OK
bits
-
Del
OK
bsock
-
Del
OK
byteswap.h
1.41 KB
Del
OK
c++
-
Del
OK
com_err.h
2.07 KB
Del
OK
complex.h
3.62 KB
Del
OK
cpio.h
2.21 KB
Del
OK
cpufreq.h
5.8 KB
Del
OK
criu
-
Del
OK
crypt.h
2.22 KB
Del
OK
ctype.h
11.52 KB
Del
OK
curses.h
93.19 KB
Del
OK
cursesapp.h
6.62 KB
Del
OK
cursesf.h
27.05 KB
Del
OK
cursesm.h
19.09 KB
Del
OK
cursesp.h
8.3 KB
Del
OK
cursesw.h
48.24 KB
Del
OK
cursslk.h
7.13 KB
Del
OK
db.h
120.21 KB
Del
OK
db4.7.25
-
Del
OK
db_185.h
5.84 KB
Del
OK
dbm.h
1.37 KB
Del
OK
dirent.h
12.34 KB
Del
OK
dlfcn.h
6.88 KB
Del
OK
drm
-
Del
OK
e2p
-
Del
OK
elf.h
141.01 KB
Del
OK
endian.h
2.95 KB
Del
OK
entities.h
4.56 KB
Del
OK
envz.h
2.82 KB
Del
OK
err.h
2.18 KB
Del
OK
errno.h
2.33 KB
Del
OK
error.h
2.01 KB
Del
OK
et
-
Del
OK
eti.h
2.82 KB
Del
OK
etip.h
9.04 KB
Del
OK
execinfo.h
1.5 KB
Del
OK
expat.h
41.04 KB
Del
OK
expat_external.h
3.29 KB
Del
OK
ext2fs
-
Del
OK
fcntl.h
9.89 KB
Del
OK
features.h
12.87 KB
Del
OK
fenv.h
4.5 KB
Del
OK
fmtmsg.h
3.18 KB
Del
OK
fnmatch.h
2.27 KB
Del
OK
fontconfig
-
Del
OK
form.h
17.56 KB
Del
OK
fpu_control.h
3.5 KB
Del
OK
freetype2
-
Del
OK
fstab.h
3.04 KB
Del
OK
fts.h
5.17 KB
Del
OK
ftw.h
5.15 KB
Del
OK
gconv.h
5.16 KB
Del
OK
gcrypt-module.h
7.18 KB
Del
OK
gcrypt.h
76.51 KB
Del
OK
gd.h
32.02 KB
Del
OK
gd_io.h
1.13 KB
Del
OK
gdbm
-
Del
OK
gdbm.h
5.75 KB
Del
OK
gdcache.h
2.75 KB
Del
OK
gdfontg.h
623 B
Del
OK
gdfontl.h
621 B
Del
OK
gdfontmb.h
590 B
Del
OK
gdfonts.h
585 B
Del
OK
gdfontt.h
617 B
Del
OK
gdfx.h
2.34 KB
Del
OK
gelf.h
11.05 KB
Del
OK
getopt.h
6.53 KB
Del
OK
gettext-po.h
15.17 KB
Del
OK
glob.h
6.51 KB
Del
OK
gnu
-
Del
OK
gnu-versions.h
2.29 KB
Del
OK
google
-
Del
OK
gpg-error.h
23.66 KB
Del
OK
grp.h
6.75 KB
Del
OK
gshadow.h
4.43 KB
Del
OK
gssapi
-
Del
OK
gssapi.h
181 B
Del
OK
gssrpc
-
Del
OK
iconv.h
1.83 KB
Del
OK
idn-free.h
2.41 KB
Del
OK
idn-int.h
20 B
Del
OK
idna.h
3.48 KB
Del
OK
ieee754.h
4.81 KB
Del
OK
ifaddrs.h
2.77 KB
Del
OK
inttypes.h
11.61 KB
Del
OK
jconfig.h
1.7 KB
Del
OK
jerror.h
14.4 KB
Del
OK
jmorecfg.h
13.5 KB
Del
OK
jpeglib.h
49.12 KB
Del
OK
kadm5
-
Del
OK
kdb.h
60.12 KB
Del
OK
kde4
-
Del
OK
keyutils.h
7.08 KB
Del
OK
krad.h
8.72 KB
Del
OK
krb5
-
Del
OK
krb5.h
402 B
Del
OK
langinfo.h
15.57 KB
Del
OK
lastlog.h
126 B
Del
OK
lauxlib.h
5.64 KB
Del
OK
lber.h
14.95 KB
Del
OK
lber_types.h
1.43 KB
Del
OK
ldap.h
63.46 KB
Del
OK
ldap_cdefs.h
9.24 KB
Del
OK
ldap_features.h
1.77 KB
Del
OK
ldap_schema.h
9.23 KB
Del
OK
ldap_utf8.h
3.39 KB
Del
OK
ldif.h
4.58 KB
Del
OK
libaio.h
7.8 KB
Del
OK
libdb
-
Del
OK
libelf.h
19.11 KB
Del
OK
libexslt
-
Del
OK
libgen.h
1.37 KB
Del
OK
libintl.h
4.49 KB
Del
OK
libio.h
16.87 KB
Del
OK
libltdl
-
Del
OK
libpng15
-
Del
OK
libxml2
-
Del
OK
libxslt
-
Del
OK
limits.h
4.42 KB
Del
OK
link.h
6.99 KB
Del
OK
linux
-
Del
OK
locale.h
7.78 KB
Del
OK
ltdl.h
5.58 KB
Del
OK
lua.h
11.41 KB
Del
OK
lua.hpp
191 B
Del
OK
luaconf.h
21.64 KB
Del
OK
lualib.h
1 KB
Del
OK
lzma
-
Del
OK
lzma.h
9.51 KB
Del
OK
malloc.h
6.44 KB
Del
OK
math.h
15.7 KB
Del
OK
mcheck.h
2.4 KB
Del
OK
memory.h
962 B
Del
OK
menu.h
11.67 KB
Del
OK
misc
-
Del
OK
mntent.h
3.3 KB
Del
OK
monetary.h
1.73 KB
Del
OK
mqueue.h
3.7 KB
Del
OK
mtd
-
Del
OK
mysql
-
Del
OK
nc_tparm.h
4.05 KB
Del
OK
ncurses
-
Del
OK
ncurses.h
93.19 KB
Del
OK
ncurses_dll.h
3.83 KB
Del
OK
ncursesw
-
Del
OK
ndbm.h
2.39 KB
Del
OK
net
-
Del
OK
netash
-
Del
OK
netatalk
-
Del
OK
netax25
-
Del
OK
netdb.h
27.46 KB
Del
OK
neteconet
-
Del
OK
netinet
-
Del
OK
netipx
-
Del
OK
netiucv
-
Del
OK
netpacket
-
Del
OK
netrom
-
Del
OK
netrose
-
Del
OK
nfs
-
Del
OK
nl_types.h
1.73 KB
Del
OK
nlist.h
1.56 KB
Del
OK
nss.h
1.85 KB
Del
OK
obstack.h
18.84 KB
Del
OK
openssl
-
Del
OK
panel.h
3.97 KB
Del
OK
paths.h
2.91 KB
Del
OK
pcre.h
29.73 KB
Del
OK
pcre_scanner.h
6.45 KB
Del
OK
pcre_stringpiece.h
6.11 KB
Del
OK
pcrecpp.h
25.91 KB
Del
OK
pcrecpparg.h
6.62 KB
Del
OK
pcreposix.h
5.32 KB
Del
OK
png.h
113.36 KB
Del
OK
pngconf.h
20.94 KB
Del
OK
pnglibconf.h
6.3 KB
Del
OK
poll.h
22 B
Del
OK
pr29.h
2.07 KB
Del
OK
printf.h
6.56 KB
Del
OK
profile.h
11.87 KB
Del
OK
protobuf-c
-
Del
OK
protocols
-
Del
OK
pthread.h
39.95 KB
Del
OK
pty.h
1.51 KB
Del
OK
punycode.h
9.36 KB
Del
OK
pwd.h
5.87 KB
Del
OK
python2.7
-
Del
OK
python3.6m
-
Del
OK
quota
-
Del
OK
rdma
-
Del
OK
re_comp.h
957 B
Del
OK
regex.h
21.58 KB
Del
OK
regexp.h
6.89 KB
Del
OK
resolv.h
14.67 KB
Del
OK
rpc
-
Del
OK
rpcsvc
-
Del
OK
sasl
-
Del
OK
sched.h
4.55 KB
Del
OK
scsi
-
Del
OK
search.h
5.11 KB
Del
OK
security
-
Del
OK
selinux
-
Del
OK
semaphore.h
2.36 KB
Del
OK
sepol
-
Del
OK
setjmp.h
3.97 KB
Del
OK
sgtty.h
1.33 KB
Del
OK
shadow.h
5.1 KB
Del
OK
signal.h
13.3 KB
Del
OK
slapi-plugin.h
37.45 KB
Del
OK
sound
-
Del
OK
spawn.h
6.53 KB
Del
OK
stab.h
264 B
Del
OK
stdc-predef.h
1.59 KB
Del
OK
stdint.h
7.94 KB
Del
OK
stdio.h
30.9 KB
Del
OK
stdio_ext.h
2.74 KB
Del
OK
stdlib.h
33.23 KB
Del
OK
string.h
21.75 KB
Del
OK
stringprep.h
8 KB
Del
OK
strings.h
4.55 KB
Del
OK
sys
-
Del
OK
syscall.h
25 B
Del
OK
sysexits.h
5.11 KB
Del
OK
syslog.h
24 B
Del
OK
tar.h
3.67 KB
Del
OK
tcpd.h
11.48 KB
Del
OK
term.h
38.63 KB
Del
OK
term_entry.h
7.91 KB
Del
OK
termcap.h
3.4 KB
Del
OK
termio.h
214 B
Del
OK
termios.h
3.52 KB
Del
OK
tgmath.h
18.11 KB
Del
OK
thread_db.h
15.65 KB
Del
OK
tic.h
12.35 KB
Del
OK
tiff.h
34.95 KB
Del
OK
tiffconf-64.h
3.35 KB
Del
OK
tiffconf.h
250 B
Del
OK
tiffio.h
22.52 KB
Del
OK
tiffio.hxx
1.66 KB
Del
OK
tiffvers.h
410 B
Del
OK
time.h
13.4 KB
Del
OK
tld.h
4.54 KB
Del
OK
ttyent.h
2.44 KB
Del
OK
uapi
-
Del
OK
uchar.h
2.42 KB
Del
OK
ucontext.h
1.92 KB
Del
OK
ulimit.h
1.55 KB
Del
OK
unctrl.h
3.03 KB
Del
OK
unistd.h
41.78 KB
Del
OK
ustat.h
23 B
Del
OK
utime.h
1.5 KB
Del
OK
utmp.h
3.16 KB
Del
OK
utmpx.h
4.02 KB
Del
OK
uuid
-
Del
OK
values.h
1.92 KB
Del
OK
verto-module.h
6.48 KB
Del
OK
verto.h
18.57 KB
Del
OK
video
-
Del
OK
wait.h
22 B
Del
OK
wchar.h
31.37 KB
Del
OK
wctype.h
10.89 KB
Del
OK
wordexp.h
2.47 KB
Del
OK
xcb
-
Del
OK
xen
-
Del
OK
xlocale.h
1.66 KB
Del
OK
zconf.h
14.92 KB
Del
OK
zlib.h
84.68 KB
Del
OK
Edit: verto.h
/* * Copyright 2011 Red Hat, Inc. * * Permission is hereby granted, free of charge, to any person * obtaining a copy of this software and associated documentation files * (the "Software"), to deal in the Software without restriction, * including without limitation the rights to use, copy, modify, merge, * publish, distribute, sublicense, and/or sell copies of the Software, * and to permit persons to whom the Software is furnished to do so, * subject to the following conditions: * * The above copyright notice and this permission notice shall be * included in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ #ifndef VERTO_H_ #define VERTO_H_ #include <time.h> /* For time_t */ #include <unistd.h> /* For pid_t */ #ifdef WIN32 #include <windows.h> typedef HANDLE verto_proc; typedef DWORD verto_proc_status; #else typedef pid_t verto_proc; typedef int verto_proc_status; #endif #define VERTO_SIG_IGN ((verto_callback *) 1) #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ typedef struct verto_ctx verto_ctx; typedef struct verto_ev verto_ev; typedef enum { VERTO_EV_TYPE_NONE = 0, VERTO_EV_TYPE_IO = 1, VERTO_EV_TYPE_TIMEOUT = 1 << 1, VERTO_EV_TYPE_IDLE = 1 << 2, VERTO_EV_TYPE_SIGNAL = 1 << 3, VERTO_EV_TYPE_CHILD = 1 << 4 } verto_ev_type; typedef enum { VERTO_EV_FLAG_NONE = 0, VERTO_EV_FLAG_PERSIST = 1, VERTO_EV_FLAG_PRIORITY_LOW = 1 << 1, VERTO_EV_FLAG_PRIORITY_MEDIUM = 1 << 2, VERTO_EV_FLAG_PRIORITY_HIGH = 1 << 3, VERTO_EV_FLAG_IO_READ = 1 << 4, VERTO_EV_FLAG_IO_WRITE = 1 << 5, VERTO_EV_FLAG_IO_ERROR = 1 << 7, VERTO_EV_FLAG_IO_CLOSE_FD = 1 << 8, VERTO_EV_FLAG_REINITIABLE = 1 << 6, _VERTO_EV_FLAG_MUTABLE_MASK = VERTO_EV_FLAG_PRIORITY_LOW | VERTO_EV_FLAG_PRIORITY_MEDIUM | VERTO_EV_FLAG_PRIORITY_HIGH | VERTO_EV_FLAG_IO_READ | VERTO_EV_FLAG_IO_WRITE, _VERTO_EV_FLAG_MAX = VERTO_EV_FLAG_IO_CLOSE_FD } verto_ev_flag; typedef void (verto_callback)(verto_ctx *ctx, verto_ev *ev); /** * Creates a new event context using an optionally specified implementation * and/or optionally specified required features. * * If you are an application that has already decided on using a particular * event loop implementation, you should not call this function, but instead * import the verto-NAME.h header and link against the verto-NAME.so, where * NAME is the implementation you wish to use. * * If you are a library, you should generally avoid creating event contexts * on your own but allow applications to pass in a verto_ctx you can use. * * There are two cases where you should use this function. The first is * where you have a need to choose an implementation at run time, usually * for testing purposes. The second and more common is when you simply * wish to remain implementation agnostic. In this later case, you should * always call like this: verto_new(NULL, ...). This lets verto choose the best * implementation to use. * * If impl is not NULL, a new context is returned which is backed by the * implementation specified. If the implementation specified is not * available or if the required types (reqtypes) are not provided by the * named implementation, NULL is returned. The parameter 'impl' can specify: * * The full path to an implementation library * * The name of the implementation library (i.e. - "glib" or "libev") * * If impl is NULL, verto will attempt to automatically determine the * best implementation to use. * * First, verto will attempt to use an existing, previously loaded * implementation. This is handled automatically by internal caching of either * the first implementation loaded or the one specified by verto_set_default(). * * Second, verto will attempt to discern if you are already linked to any * of the supported implementations (to avoid wasting memory by loading * extra unnecessary libraries). If you are linked to one supported * implementation, that implementation will be chosen. If you are linked * to more than one supported implementation one of the ones linked to * will be chosen, but the order of the particular choice is undefined. * * Third, verto will attempt to load the compile-time default, if defined at * build time and available at runtime. * * Last, verto will attempt to load any implementation installed. The specific * order of this step is undefined. * * In all cases above, if the implementation does not support all the specified * features (reqtypes), it will be skipped and processing will continue from * where it left off. This means that if verto_new() returns non-NULL it is * guaranteed to support the features you specified. * * @see verto_set_default() * @param impl The implementation to use, or NULL. * @param reqtypes A bitwise or'd list of required event type features. * @return A new verto_ctx, or NULL on error. Call verto_free() when done. */ verto_ctx * verto_new(const char *impl, verto_ev_type reqtypes); /** * Gets the default event context using an optionally specified implementation. * * This function is essentially a singleton version of verto_new(). However, * since this function must return the same loop as the *_default() call of * the underlying implementation (if such a function exists), it is NOT a * global singleton, but a per-implementation singleton. For this reason, you * must call verto_free() when you are done with this loop. Even after calling * verto_free() on the default verto_ctx, you can safely call verto_default() * again and receive a new reference to the same (internally default) loop. * * In all other respects, verto_default() acts exactly like verto_new(). * * @see verto_new() * @see verto_free() * @param impl The implementation to use, or NULL. * @param reqtypes A bitwise or'd list of required event type features. * @return The default verto_ctx, or NULL on error. Call verto_free() when done. */ verto_ctx * verto_default(const char *impl, verto_ev_type reqtypes); /** * Sets the default implementation to use by its name. * * This function returns 1 on success and 0 on failure. It can fail for the * following reasons: * 1. The default implementation was already set via verto_set_default(). * 2. The implementation specified could not be found. * 3. The implementation specified didn't support the features specified. * 4. The impl argument was NULL. * 5. verto_new() was already called. * 6. verto_default() was already called. * 7. verto_new_NAME() was already called. * 8. verto_default_NAME() was already called. * 9. verto_convert_NAME() was already called. * * @see verto_new() * @see verto_default() * @param impl The implementation to use. * @param reqtypes A bitwise or'd list of required event type features. * @return The default verto_ctx, or NULL on error. Call verto_free() when done. */ int verto_set_default(const char *impl, verto_ev_type reqtypes); /** * Sets the allocator to use for verto_ctx and verto_ev objects. * * If you plan to set the allocator, you MUST call this function before any * other verto_*() calls. * * @see verto_new() * @see verto_default() * @see verto_add_io() * @see verto_add_timeout() * @see verto_add_idle() * @see verto_add_signal() * @see verto_add_child() * @param resize The allocator to use (behaves like realloc()) * @param hierarchical Zero if the allocator is not hierarchical */ int verto_set_allocator(void *(*resize)(void *mem, size_t size), int hierarchical); /** * Frees a verto_ctx. * * When called on a default verto_ctx, the reference will be freed but the * internal default loop will still be available via another call to * verto_default(). * * @see verto_new() * @see verto_default() * @param ctx The verto_ctx to free. */ void verto_free(verto_ctx *ctx); /** * Run the verto_ctx forever, or at least until verto_break() is called. * * @see verto_break() * @param ctx The verto_ctx to run. */ void verto_run(verto_ctx *ctx); /** * Run the verto_ctx once. May block. * * @param ctx The verto_ctx to run once. */ void verto_run_once(verto_ctx *ctx); /** * Exits the currently running verto_ctx. * * @see verto_run() * @param ctx The verto_ctx to exit. */ void verto_break(verto_ctx *ctx); /** * Re-initializes the verto_ctx. * * This function deletes all events, except those which have set the * VERTO_EV_FLAG_REINITIABLE flag. If you fork(), you MUST call this in the * child process after the fork! * * If this function fails it indicates that at least one * VERTO_EV_FLAG_REINITIABLE event was not rearmed or that ctx was NULL. * * @see verto_new() * @see verto_default() * @param ctx The verto_ctx to re-initialize. * @return Non-zero on success, 0 on error. */ int verto_reinitialize(verto_ctx *ctx); /** * Adds a callback executed when a file descriptor is ready to be read/written. * * All verto_ev events are automatically freed when their parent verto_ctx is * freed. You do not need to free them manually. If VERTO_EV_FLAG_PERSIST is * provided, the event will repeat until verto_del() is called. If * VERTO_EV_FLAG_PERSIST is not provided, the event will be freed automatically * after its execution. In either case, you may call verto_del() at any time * to prevent the event from executing. * If VERTO_EV_FLAG_IO_CLOSE_FD is provided the passed in fd is automatically * closed when the event is freed with verto_del() * * NOTE: On Windows, the underlying select() only works with sockets. As such, * any attempt to add a non-socket io event on Windows will produce undefined * results and may even crash. * * @see verto_del() * @param ctx The verto_ctx which will fire the callback. * @param flags The flags to set (at least one VERTO_EV_FLAG_IO* required). * @param callback The callback to fire. * @param fd The file descriptor to watch for reads. * @return The verto_ev registered with the event context or NULL on error. */ verto_ev * verto_add_io(verto_ctx *ctx, verto_ev_flag flags, verto_callback *callback, int fd); /** * Adds a callback executed after a period of time. * * All verto_ev events are automatically freed when their parent verto_ctx is * freed. You do not need to free them manually. If VERTO_EV_FLAG_PERSIST is * provided, the event will repeat until verto_del() is called. If * VERTO_EV_FLAG_PERSIST is not provided, the event will be freed automatically * after its execution. In either case, you may call verto_del() at any time * to prevent the event from executing. * * @see verto_del() * @param ctx The verto_ctx which will fire the callback. * @param flags The flags to set. * @param callback The callback to fire. * @param interval Time period to wait before firing (in milliseconds). * @return The verto_ev registered with the event context. */ verto_ev * verto_add_timeout(verto_ctx *ctx, verto_ev_flag flags, verto_callback *callback, time_t interval); /** * Adds a callback executed when there is nothing else to do. * * All verto_ev events are automatically freed when their parent verto_ctx is * freed. You do not need to free them manually. If VERTO_EV_FLAG_PERSIST is * provided, the event will repeat until verto_del() is called. If * VERTO_EV_FLAG_PERSIST is not provided, the event will be freed automatically * after its execution. In either case, you may call verto_del() at any time * to prevent the event from executing. * * @see verto_del() * @param ctx The verto_ctx which will fire the callback. * @param flags The flags to set. * @param callback The callback to fire. * @return The verto_ev registered with the event context. */ verto_ev * verto_add_idle(verto_ctx *ctx, verto_ev_flag flags, verto_callback *callback); /** * Adds a callback executed when a signal is received. * * All verto_ev events are automatically freed when their parent verto_ctx is * freed. You do not need to free them manually. If VERTO_EV_FLAG_PERSIST is * provided, the event will repeat until verto_del() is called. If * VERTO_EV_FLAG_PERSIST is not provided, the event will be freed automatically * after its execution. In either case, you may call verto_del() at any time * to prevent the event from executing. * * NOTE: If you attempt to ignore a signal without the VERTO_EV_FLAG_PERSIST * flag, this function fails. * * NOTE: SIGCHLD is expressly not supported. If you want this notification, * please use verto_add_child(). * * WARNNIG: Signal events can only be reliably received in the default verto_ctx * in some implementations. Attempting to receive signal events in non-default * loops may result in assert() failures. * * WARNING: While verto does its best to protect you from crashes, there is * essentially no way to do signal events if you mix multiple implementations in * a single process. Attempting to do so will result in undefined behavior, * and potentially even a crash. You have been warned. * * @see verto_add_child() * @see verto_repeat() * @see verto_del() * @param ctx The verto_ctx which will fire the callback. * @param flags The flags to set. * @param callback The callback to fire. * @param signal The signal to watch for. * @return The verto_ev registered with the event context. */ verto_ev * verto_add_signal(verto_ctx *ctx, verto_ev_flag flags, verto_callback *callback, int signal); /** * Adds a callback executed when a child process exits. * * This event will be freed automatically after its execution. Due to the * nature of a process' life-cycle, child events cannot persist (processes only * exit once). This function returns NULL if you attempt to use * VERTO_EV_FLAG_PERSIST. You may, of course, call verto_del() at any time to * prevent the callback from firing. * * @see verto_del() * @param ctx The verto_ctx which will fire the callback. * @param flags The flags to set. * @param callback The callback to fire. * @param child The pid (POSIX) or handle (Win32) of the child to watch for. * @return The verto_ev registered with the event context. */ verto_ev * verto_add_child(verto_ctx *ctx, verto_ev_flag flags, verto_callback *callback, verto_proc proc); /** * Sets the private pointer of the verto_ev. * * The free callback will be called in two cases: * 1. When the event is deleted (manually or automatically) * 2. When verto_set_private() is called again, unless * free is NULL. * * @see verto_get_private() * @param ev The verto_ev * @param priv The private value to store * @param free The callback used to free the data or NULL */ void verto_set_private(verto_ev *ev, void *priv, verto_callback *free); /** * Gets the private pointer of the verto_ev. * * @see verto_set_private() * @param ev The verto_ev * @return The verto_ev private pointer */ void * verto_get_private(const verto_ev *ev); /** * Gets the type of the verto_ev. * * @see verto_add_io() * @see verto_add_timeout() * @see verto_add_idle() * @see verto_add_signal() * @see verto_add_child() * @param ev The verto_ev * @return The verto_ev type */ verto_ev_type verto_get_type(const verto_ev *ev); /** * Gets the flags associated with the given verto_ev. * * @see verto_add_io() * @see verto_add_timeout() * @see verto_add_idle() * @see verto_add_signal() * @see verto_add_child() * @see verto_set_flags() * @param ev The verto_ev * @return The verto_ev type */ verto_ev_flag verto_get_flags(const verto_ev *ev); /** * Sets the flags associated with the given verto_ev. * * See _VERTO_EV_FLAG_MUTABLE_MASK for the flags that can be changed * with this function. All others will be ignored. * * @see verto_add_io() * @see verto_add_timeout() * @see verto_add_idle() * @see verto_add_signal() * @see verto_add_child() * @see verto_get_flags() * @param ev The verto_ev * @param flags The flags for the event */ void verto_set_flags(verto_ev *ev, verto_ev_flag flags); /** * Gets the file descriptor associated with a read/write verto_ev. * * @see verto_add_io() * @param ev The verto_ev to retrieve the file descriptor from. * @return The file descriptor, or -1 if not a read/write event. */ int verto_get_fd(const verto_ev *ev); /** * Gets the file descriptor state from when the event fires. * * @see verto_add_io() * @param ev The verto_ev to retrieve the fd state from. * @return The fd state. */ verto_ev_flag verto_get_fd_state(const verto_ev *ev); /** * Gets the interval associated with a timeout verto_ev. * * @see verto_add_timeout() * @param ev The verto_ev to retrieve the interval from. * @return The interval, or 0 if not a timeout event. */ time_t verto_get_interval(const verto_ev *ev); /** * Gets the signal associated with a signal verto_ev. * * @see verto_add_signal() * @param ev The verto_ev to retrieve the signal from. * @return The signal, or -1 if not a signal event. */ int verto_get_signal(const verto_ev *ev); /** * Gets the process associated with a child verto_ev. * * @see verto_add_child() * @param ev The verto_ev to retrieve the process from. * @return The pid/handle, or 0/NULL if not a child event (POSIX/Win32). */ verto_proc verto_get_proc(const verto_ev *ev); /** * Gets the status of the process which caused this event to fire. * * @see verto_add_child() * @param ev The verto_ev to retrieve the status from. * @return The pid/handle status. */ verto_proc_status verto_get_proc_status(const verto_ev *ev); /** * Gets the verto_ctx associated with a verto_ev. * * This is a borrowed reference, don't attempt to free it! * * @param ev The verto_ev to retrieve the verto_ctx from. * @return The verto_ctx. */ verto_ctx * verto_get_ctx(const verto_ev *ev); /** * Removes an event from from the event context and frees it. * * The event and its contents cannot be used after this call. * * @see verto_add_io() * @see verto_add_timeout() * @see verto_add_idle() * @see verto_add_signal() * @see verto_add_child() * @param ev The event to delete. */ void verto_del(verto_ev *ev); /** * Returns the event types supported by this implementation. * * @param ctx The verto_ctx to query. * @return The event types supported. */ verto_ev_type verto_get_supported_types(verto_ctx *ctx); #ifdef __cplusplus } /* extern "C" */ #endif /* __cplusplus */ #endif /* VERTO_H_ */
Save