]>
git.ipfire.org Git - thirdparty/squid.git/blob - src/neighbors.h
2 * Copyright (C) 1996-2021 The Squid Software Foundation and contributors
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.
9 /* DEBUG: section 15 Neighbor Routines */
11 #ifndef SQUID_NEIGHBORS_H_
12 #define SQUID_NEIGHBORS_H_
14 #include "anyp/forward.h"
18 #include "typedefs.h" //for IRCB
21 class HttpRequestMethod
;
26 CachePeer
*getFirstPeer(void);
27 CachePeer
*getFirstUpParent(PeerSelector
*);
28 CachePeer
*getNextPeer(CachePeer
*);
29 CachePeer
*getSingleParent(PeerSelector
*);
30 int neighborsCount(PeerSelector
*);
31 int neighborsUdpPing(HttpRequest
*,
37 void neighborAddAcl(const char *, const char *);
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);
43 void neighborsHtcpClear(StoreEntry
*, HttpRequest
*, const HttpRequestMethod
&, htcp_clr_reason
);
45 CachePeer
*peerFindByName(const char *);
46 CachePeer
*peerFindByNameAndPort(const char *, unsigned short);
47 CachePeer
*getDefaultParent(PeerSelector
*);
48 CachePeer
*getRoundRobinParent(PeerSelector
*);
49 CachePeer
*getWeightedRoundRobinParent(PeerSelector
*);
50 void peerClearRRStart(void);
51 void peerClearRR(void);
52 lookup_t
peerDigestLookup(CachePeer
* p
, PeerSelector
*);
53 CachePeer
*neighborsDigestSelect(PeerSelector
*);
54 void peerNoteDigestLookup(HttpRequest
* request
, CachePeer
* p
, lookup_t lookup
);
55 void peerNoteDigestGone(CachePeer
* p
);
56 int neighborUp(const CachePeer
* e
);
57 const char *neighborTypeStr(const CachePeer
* e
);
58 peer_t
neighborType(const CachePeer
*, const AnyP::Uri
&);
59 void peerConnectFailed(CachePeer
*);
60 void peerConnectSucceded(CachePeer
*);
61 void dump_peer_options(StoreEntry
*, CachePeer
*);
62 int peerHTTPOkay(const CachePeer
*, PeerSelector
*);
64 /// \returns max(1, timeout)
65 time_t positiveTimeout(const time_t timeout
);
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
);
74 CachePeer
*whichPeer(const Ip::Address
&from
);
76 #endif /* SQUID_NEIGHBORS_H_ */