]>
Commit | Line | Data |
---|---|---|
fc54b8d2 | 1 | /* |
f70aedc4 | 2 | * Copyright (C) 1996-2021 The Squid Software Foundation and contributors |
fc54b8d2 | 3 | * |
bbc27441 AJ |
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. | |
fc54b8d2 FC |
7 | */ |
8 | ||
bbc27441 AJ |
9 | /* DEBUG: section 15 Neighbor Routines */ |
10 | ||
fc54b8d2 FC |
11 | #ifndef SQUID_NEIGHBORS_H_ |
12 | #define SQUID_NEIGHBORS_H_ | |
13 | ||
c8ab5ec6 | 14 | #include "anyp/forward.h" |
fc54b8d2 | 15 | #include "enums.h" |
09bbee4c | 16 | #include "ICP.h" |
fc54b8d2 | 17 | #include "lookup_t.h" |
e1ba42a4 | 18 | #include "typedefs.h" //for IRCB |
fc54b8d2 FC |
19 | |
20 | class HttpRequest; | |
09bbee4c | 21 | class HttpRequestMethod; |
a3c6762c | 22 | class CachePeer; |
fc54b8d2 | 23 | class StoreEntry; |
cb365059 | 24 | class PeerSelector; |
fc54b8d2 | 25 | |
001d55dc | 26 | CachePeer *getFirstPeer(void); |
cb365059 | 27 | CachePeer *getFirstUpParent(PeerSelector *); |
001d55dc | 28 | CachePeer *getNextPeer(CachePeer *); |
cb365059 EB |
29 | CachePeer *getSingleParent(PeerSelector *); |
30 | int neighborsCount(PeerSelector *); | |
001d55dc | 31 | int neighborsUdpPing(HttpRequest *, |
e4a14600 A |
32 | StoreEntry *, |
33 | IRCB * callback, | |
cb365059 | 34 | PeerSelector *ps, |
e4a14600 A |
35 | int *exprep, |
36 | int *timeout); | |
001d55dc | 37 | void neighborAddAcl(const char *, const char *); |
fc54b8d2 | 38 | |
001d55dc FC |
39 | void neighborsUdpAck(const cache_key *, icp_common_t *, const Ip::Address &); |
40 | void neighborAdd(const char *, const char *, int, int, int, int, int); | |
41 | void neighbors_init(void); | |
fc54b8d2 | 42 | #if USE_HTCP |
1ac1d4d3 | 43 | void neighborsHtcpClear(StoreEntry *, HttpRequest *, const HttpRequestMethod &, htcp_clr_reason); |
fc54b8d2 | 44 | #endif |
001d55dc FC |
45 | CachePeer *peerFindByName(const char *); |
46 | CachePeer *peerFindByNameAndPort(const char *, unsigned short); | |
cb365059 EB |
47 | CachePeer *getDefaultParent(PeerSelector*); |
48 | CachePeer *getRoundRobinParent(PeerSelector*); | |
49 | CachePeer *getWeightedRoundRobinParent(PeerSelector*); | |
001d55dc FC |
50 | void peerClearRRStart(void); |
51 | void peerClearRR(void); | |
cb365059 EB |
52 | lookup_t peerDigestLookup(CachePeer * p, PeerSelector *); |
53 | CachePeer *neighborsDigestSelect(PeerSelector *); | |
001d55dc FC |
54 | void peerNoteDigestLookup(HttpRequest * request, CachePeer * p, lookup_t lookup); |
55 | void peerNoteDigestGone(CachePeer * p); | |
56 | int neighborUp(const CachePeer * e); | |
001d55dc | 57 | const char *neighborTypeStr(const CachePeer * e); |
c8ab5ec6 | 58 | peer_t neighborType(const CachePeer *, const AnyP::Uri &); |
001d55dc FC |
59 | void peerConnectFailed(CachePeer *); |
60 | void peerConnectSucceded(CachePeer *); | |
61 | void dump_peer_options(StoreEntry *, CachePeer *); | |
cb365059 | 62 | int peerHTTPOkay(const CachePeer *, PeerSelector *); |
fc54b8d2 | 63 | |
0ce8e93b EB |
64 | /// \returns max(1, timeout) |
65 | time_t positiveTimeout(const time_t timeout); | |
66 | ||
e8dca475 CT |
67 | /// Whether we can open new connections to the peer (e.g., despite max-conn) |
68 | bool peerCanOpenMore(const CachePeer *p); | |
69 | /// Whether the peer has idle or standby connections that can be used now | |
70 | bool peerHasConnAvailable(const CachePeer *p); | |
71 | /// Notifies peer of an associated connection closure. | |
72 | void peerConnClosed(CachePeer *p); | |
73 | ||
001d55dc | 74 | CachePeer *whichPeer(const Ip::Address &from); |
fc54b8d2 FC |
75 | |
76 | #endif /* SQUID_NEIGHBORS_H_ */ | |
f53969cc | 77 |