]> git.ipfire.org Git - thirdparty/squid.git/blame - src/neighbors.h
SourceFormat Enforcement
[thirdparty/squid.git] / src / neighbors.h
CommitLineData
fc54b8d2 1/*
f6e9a3ee 2 * Copyright (C) 1996-2019 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
20class HttpRequest;
09bbee4c 21class HttpRequestMethod;
a3c6762c 22class CachePeer;
fc54b8d2 23class StoreEntry;
cb365059 24class PeerSelector;
fc54b8d2 25
001d55dc 26CachePeer *getFirstPeer(void);
cb365059 27CachePeer *getFirstUpParent(PeerSelector *);
001d55dc 28CachePeer *getNextPeer(CachePeer *);
cb365059
EB
29CachePeer *getSingleParent(PeerSelector *);
30int neighborsCount(PeerSelector *);
001d55dc 31int neighborsUdpPing(HttpRequest *,
e4a14600
A
32 StoreEntry *,
33 IRCB * callback,
cb365059 34 PeerSelector *ps,
e4a14600
A
35 int *exprep,
36 int *timeout);
001d55dc 37void neighborAddAcl(const char *, const char *);
fc54b8d2 38
001d55dc
FC
39void neighborsUdpAck(const cache_key *, icp_common_t *, const Ip::Address &);
40void neighborAdd(const char *, const char *, int, int, int, int, int);
41void neighbors_init(void);
fc54b8d2 42#if USE_HTCP
001d55dc 43void neighborsHtcpClear(StoreEntry *, const char *, HttpRequest *, const HttpRequestMethod &, htcp_clr_reason);
fc54b8d2 44#endif
001d55dc
FC
45CachePeer *peerFindByName(const char *);
46CachePeer *peerFindByNameAndPort(const char *, unsigned short);
cb365059
EB
47CachePeer *getDefaultParent(PeerSelector*);
48CachePeer *getRoundRobinParent(PeerSelector*);
49CachePeer *getWeightedRoundRobinParent(PeerSelector*);
001d55dc
FC
50void peerClearRRStart(void);
51void peerClearRR(void);
cb365059
EB
52lookup_t peerDigestLookup(CachePeer * p, PeerSelector *);
53CachePeer *neighborsDigestSelect(PeerSelector *);
001d55dc
FC
54void peerNoteDigestLookup(HttpRequest * request, CachePeer * p, lookup_t lookup);
55void peerNoteDigestGone(CachePeer * p);
56int neighborUp(const CachePeer * e);
001d55dc 57const char *neighborTypeStr(const CachePeer * e);
c8ab5ec6 58peer_t neighborType(const CachePeer *, const AnyP::Uri &);
001d55dc
FC
59void peerConnectFailed(CachePeer *);
60void peerConnectSucceded(CachePeer *);
61void dump_peer_options(StoreEntry *, CachePeer *);
cb365059 62int peerHTTPOkay(const CachePeer *, PeerSelector *);
fc54b8d2 63
0ce8e93b
EB
64// TODO: Consider moving this method to CachePeer class.
65/// \returns the effective connect timeout for the given peer
66time_t peerConnectTimeout(const CachePeer *peer);
67
68/// \returns max(1, timeout)
69time_t positiveTimeout(const time_t timeout);
70
e8dca475
CT
71/// Whether we can open new connections to the peer (e.g., despite max-conn)
72bool peerCanOpenMore(const CachePeer *p);
73/// Whether the peer has idle or standby connections that can be used now
74bool peerHasConnAvailable(const CachePeer *p);
75/// Notifies peer of an associated connection closure.
76void peerConnClosed(CachePeer *p);
77
001d55dc 78CachePeer *whichPeer(const Ip::Address &from);
fc54b8d2
FC
79
80#endif /* SQUID_NEIGHBORS_H_ */
f53969cc 81