]> git.ipfire.org Git - thirdparty/squid.git/blob - src/neighbors.h
Boilerplate: update copyright blurbs on src/
[thirdparty/squid.git] / src / neighbors.h
1 /*
2 * Copyright (C) 1996-2014 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 /* DEBUG: section 15 Neighbor Routines */
10
11 #ifndef SQUID_NEIGHBORS_H_
12 #define SQUID_NEIGHBORS_H_
13
14 #include "enums.h"
15 #include "ICP.h"
16 #include "lookup_t.h"
17
18 class HttpRequest;
19 class HttpRequestMethod;
20 class CachePeer;
21 class StoreEntry;
22
23 CachePeer *getFirstPeer(void);
24 CachePeer *getFirstUpParent(HttpRequest *);
25 CachePeer *getNextPeer(CachePeer *);
26 CachePeer *getSingleParent(HttpRequest *);
27 int neighborsCount(HttpRequest *);
28 int neighborsUdpPing(HttpRequest *,
29 StoreEntry *,
30 IRCB * callback,
31 void *data,
32 int *exprep,
33 int *timeout);
34 void neighborAddAcl(const char *, const char *);
35
36 void neighborsUdpAck(const cache_key *, icp_common_t *, const Ip::Address &);
37 void neighborAdd(const char *, const char *, int, int, int, int, int);
38 void neighbors_init(void);
39 #if USE_HTCP
40 void neighborsHtcpClear(StoreEntry *, const char *, HttpRequest *, const HttpRequestMethod &, htcp_clr_reason);
41 #endif
42 CachePeer *peerFindByName(const char *);
43 CachePeer *peerFindByNameAndPort(const char *, unsigned short);
44 CachePeer *getDefaultParent(HttpRequest * request);
45 CachePeer *getRoundRobinParent(HttpRequest * request);
46 CachePeer *getWeightedRoundRobinParent(HttpRequest * request);
47 void peerClearRRStart(void);
48 void peerClearRR(void);
49 lookup_t peerDigestLookup(CachePeer * p, HttpRequest * request);
50 CachePeer *neighborsDigestSelect(HttpRequest * request);
51 void peerNoteDigestLookup(HttpRequest * request, CachePeer * p, lookup_t lookup);
52 void peerNoteDigestGone(CachePeer * p);
53 int neighborUp(const CachePeer * e);
54 CBDUNL peerDestroy;
55 const char *neighborTypeStr(const CachePeer * e);
56 peer_t neighborType(const CachePeer *, const HttpRequest *);
57 void peerConnectFailed(CachePeer *);
58 void peerConnectSucceded(CachePeer *);
59 void dump_peer_options(StoreEntry *, CachePeer *);
60 int peerHTTPOkay(const CachePeer *, HttpRequest *);
61
62 /// Whether we can open new connections to the peer (e.g., despite max-conn)
63 bool peerCanOpenMore(const CachePeer *p);
64 /// Whether the peer has idle or standby connections that can be used now
65 bool peerHasConnAvailable(const CachePeer *p);
66 /// Notifies peer of an associated connection closure.
67 void peerConnClosed(CachePeer *p);
68
69 CachePeer *whichPeer(const Ip::Address &from);
70
71 #endif /* SQUID_NEIGHBORS_H_ */