]> git.ipfire.org Git - thirdparty/squid.git/blob - src/comm/Loops.h
Source Format Enforcement (#532)
[thirdparty/squid.git] / src / comm / Loops.h
1 /*
2 * Copyright (C) 1996-2020 The Squid Software Foundation and contributors
3 *
4 * Squid software is distributed under GPLv2+ license and includes
5 * contributions from numerous individuals and organizations.
6 * Please see the COPYING and CONTRIBUTORS files for details.
7 */
8
9 #ifndef _SQUID_SRC_COMM_LOOPS_H
10 #define _SQUID_SRC_COMM_LOOPS_H
11
12 #include "comm/Flag.h"
13 #include "comm/forward.h"
14 #include "defines.h"
15
16 /* Comm layer select loops API.
17 *
18 * These API functions must be implemented by all FD IO loops used by Squid.
19 * Defines are provided short-term for legacy code. These will disappear soon.
20 */
21
22 namespace Comm
23 {
24
25 /// Initialize the module on Squid startup
26 void SelectLoopInit(void);
27
28 /// reset/undo/unregister the watch for an FD which was set by Comm::SetSelect()
29 inline void
30 ResetSelect(int fd)
31 {
32 SetSelect(fd, COMM_SELECT_READ|COMM_SELECT_WRITE, nullptr, nullptr, 0);
33 }
34
35 /** Perform a select() or equivalent call.
36 * This is used by the main select loop engine to check for FD with IO available.
37 */
38 Comm::Flag DoSelect(int);
39
40 void QuickPollRequired(void);
41
42 /**
43 * Max number of UDP messages to receive per call to the UDP receive poller.
44 * This is a per-port limit for ICP/HTCP ports.
45 * DNS has a separate limit.
46 */
47 #if _SQUID_WINDOWS_
48 #define INCOMING_UDP_MAX 1
49 #else
50 #define INCOMING_UDP_MAX 15
51 #endif
52
53 /**
54 * Max number of DNS messages to receive per call to DNS read handler
55 */
56 #if _SQUID_WINDOWS_
57 #define INCOMING_DNS_MAX 1
58 #else
59 #define INCOMING_DNS_MAX 15
60 #endif
61
62 /**
63 * Max number of new TCP connections to accept per call to the TCP listener poller.
64 * This is a per-port limit for HTTP/HTTPS ports.
65 */
66 #if _SQUID_WINDOWS_
67 #define INCOMING_TCP_MAX 1
68 #else
69 #define INCOMING_TCP_MAX 10
70 #endif
71 #define INCOMING_TOTAL_MAX (INCOMING_TCP_MAX+INCOMING_UDP_MAX+INCOMING_DNS_MAX)
72
73 } // namespace Comm
74
75 #endif /* _SQUID_SRC_COMM_LOOPS_H */
76