]> git.ipfire.org Git - thirdparty/squid.git/blob - src/comm/Loops.h
Merge from trunk
[thirdparty/squid.git] / src / comm / Loops.h
1 /*
2 * Copyright (C) 1996-2015 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
15 /* Comm layer select loops API.
16 *
17 * These API functions must be implemented by all FD IO loops used by Squid.
18 * Defines are provided short-term for legacy code. These will disappear soon.
19 */
20
21 namespace Comm
22 {
23
24 /// Initialize the module on Squid startup
25 void SelectLoopInit(void);
26
27 /// Mark an FD to be watched for its IO status.
28 void SetSelect(int, unsigned int, PF *, void *, time_t);
29
30 /// reset/undo/unregister the watch for an FD which was set by Comm::SetSelect()
31 void ResetSelect(int);
32
33 /** Perform a select() or equivalent call.
34 * This is used by the main select loop engine to check for FD with IO available.
35 */
36 Comm::Flag DoSelect(int);
37
38 void QuickPollRequired(void);
39
40 /**
41 * Max number of UDP messages to receive per call to the UDP receive poller.
42 * This is a per-port limit for ICP/HTCP ports.
43 * DNS has a separate limit.
44 */
45 #if _SQUID_WINDOWS_
46 #define INCOMING_UDP_MAX 1
47 #else
48 #define INCOMING_UDP_MAX 15
49 #endif
50
51 /**
52 * Max number of DNS messages to receive per call to DNS read handler
53 */
54 #if _SQUID_WINDOWS_
55 #define INCOMING_DNS_MAX 1
56 #else
57 #define INCOMING_DNS_MAX 15
58 #endif
59
60 /**
61 * Max number of new TCP connections to accept per call to the TCP listener poller.
62 * This is a per-port limit for HTTP/HTTPS ports.
63 */
64 #if _SQUID_WINDOWS_
65 #define INCOMING_TCP_MAX 1
66 #else
67 #define INCOMING_TCP_MAX 10
68 #endif
69 #define INCOMING_TOTAL_MAX (INCOMING_TCP_MAX+INCOMING_UDP_MAX+INCOMING_DNS_MAX)
70
71 } // namespace Comm
72
73 #endif /* _SQUID_SRC_COMM_LOOPS_H */
74