]> jfr.im git - irc/rqf/shadowircd.git/blame - doc/technical/fd-management.txt
Commit error
[irc/rqf/shadowircd.git] / doc / technical / fd-management.txt
CommitLineData
212380e3 1Overview of the filedescriptor subsystem
2Adrian Chadd <adrian@creative.net.au>
3
212380e3 4
5
6Filedescriptor lists
7--------------------
8
9The filedescriptor list is managed through the routines in fdlist.c .
10These include:
11
12fd_open() - tag an FD as "open" and active
13fd_close() - tag an FD as "closed" and close() the filedescriptor
14fd_note() - update the filedescriptor tag
15
16You can get the current list of open filedescriptors through /stats F as
17an oper.
18
19
20
21FD lists
22--------
23
24The FD list support is very alpha. There are a few lists defined:
25
26typedef enum fdlist_t {
27 FDLIST_NONE,
28 FDLIST_SERVICE,
29 FDLIST_SERVER,
30 FDLIST_IDLECLIENT,
31 FDLIST_BUSYCLIENT,
32 FDLIST_MAX
33} fdlist_t;
34
35FDLIST_NONE Not on any list (ie close()d)
36FDLIST_SERVICE A service - listen() sockets, resolver, etc
37FDLIST_SERVER Server connections
38FDLIST_IDLECLIENT An idle client
39FDLIST_BUSYCLIENT A busy client
40FDLIST_MAX Used for bounds checking
41
42The idea is that the SERVICE sockets need polling frequently, the SERVER
43sockets also need polling frequently, BUSYCLIENT is for busy clients
44which need frequent polling (eg we're trying to write to them), and
45IDLECLIENT is for clients which we don't need to poll frequently.
46THIS hasn't been decided upon yet.