#include "squid.h"
#include "base/IoManip.h"
#include "CacheDigest.h"
#include "CachePeer.h"
#include "event.h"
#include "FwdState.h"
#include "globals.h"
#include "HttpReply.h"
#include "HttpRequest.h"
#include "internal.h"
#include "MemObject.h"
#include "mime_header.h"
#include "neighbors.h"
#include "PeerDigest.h"
#include "Store.h"
#include "store_key_md5.h"
#include "StoreClient.h"
#include "tools.h"
#include "util.h"
![](peer__digest_8cc__incl.png)
Go to the source code of this file.
Macros | |
#define | StoreDigestCBlockSize sizeof(StoreDigestCBlock) |
#define | f2s(flag) (pd->flags.flag ? "yes" : "no") |
#define | appendTime(tm) |
Functions | |
static time_t | peerDigestIncDelay (const PeerDigest *pd) |
static time_t | peerDigestNewDelay (const StoreEntry *e) |
static void | peerDigestSetCheck (PeerDigest *pd, time_t delay) |
static void | peerDigestRequest (PeerDigest *pd) |
static int | peerDigestFetchReply (void *data, char *buf, ssize_t size) |
handle HTTP response headers in the initial storeClientCopy() response More... | |
int | peerDigestSwapInCBlock (void *, char *, ssize_t) |
int | peerDigestSwapInMask (void *, char *, ssize_t) |
static int | peerDigestFetchedEnough (DigestFetchState *fetch, char *buf, ssize_t size, const char *step_name) |
static void | finishAndDeleteFetch (DigestFetchState *, const char *reason, bool sawError) |
static void | peerDigestFetchSetStats (DigestFetchState *fetch) |
static int | peerDigestSetCBlock (PeerDigest *pd, const char *buf) |
static int | peerDigestUseful (const PeerDigest *pd) |
void | peerDigestNeeded (PeerDigest *pd) |
static void | peerDigestCheck (void *data) |
static void | peerDigestHandleReply (void *data, StoreIOBuffer receivedData) |
static int | saneDiff (time_t diff) |
void | peerDigestStatsReport (const PeerDigest *pd, StoreEntry *e) |
Variables | |
static EVH | peerDigestCheck |
static STCB | peerDigestHandleReply |
const Version | CacheDigestVer = { 5, 3 } |
static const time_t | PeerDigestReqMinGap = 5 * 60 |
static const time_t | GlobDigestReqMinGap = 1 * 60 |
static time_t | pd_last_req_time = 0 |
Macro Definition Documentation
◆ appendTime
#define appendTime | ( | tm | ) |
◆ f2s
#define f2s | ( | flag | ) | (pd->flags.flag ? "yes" : "no") |
◆ StoreDigestCBlockSize
#define StoreDigestCBlockSize sizeof(StoreDigestCBlock) |
Definition at line 53 of file peer_digest.cc.
Function Documentation
◆ finishAndDeleteFetch()
|
static |
Definition at line 638 of file peer_digest.cc.
References assert, debugs, CbcPointer< Cbc >::get(), DigestFetchState::pd, PeerDigest::peer, peerDigestFetchSetStats(), and RawPointer().
Referenced by peerDigestFetchedEnough(), peerDigestFetchReply(), peerDigestHandleReply(), and peerDigestSwapInCBlock().
◆ peerDigestCheck()
|
static |
Definition at line 177 of file peer_digest.cc.
References assert, Assure, debugs, PeerDigest::flags, GlobDigestReqMinGap, PeerDigest::host, PeerDigest::next_check, pd_last_req_time, PeerDigest::peer, PeerDigestReqMinGap, peerDigestRequest(), peerDigestSetCheck(), RawPointer(), PeerDigest::received, PeerDigest::requested, squid_curtime, and PeerDigest::times.
◆ peerDigestFetchedEnough()
|
static |
Definition at line 583 of file peer_digest.cc.
References Assure, debugs, DIGEST_READ_REPLY, EBIT_TEST, DigestFetchState::entry, ENTRY_ABORTED, finishAndDeleteFetch(), StoreEntry::flags, CbcPointer< Cbc >::get(), DigestFetchState::mask_offset, DigestFetchState::offset, DigestFetchState::pd, peerDigestUseful(), size, and DigestFetchState::state.
Referenced by peerDigestFetchReply(), peerDigestHandleReply(), peerDigestSwapInCBlock(), and peerDigestSwapInMask().
◆ peerDigestFetchReply()
|
static |
Definition at line 432 of file peer_digest.cc.
References assert, PeerDigest::cd, debugs, DIGEST_READ_CBLOCK, DIGEST_READ_REPLY, DigestFetchState::entry, finishAndDeleteFetch(), MemObject::freshestReply(), CbcPointer< Cbc >::get(), StoreEntry::mem(), StoreEntry::mem_obj, DigestFetchState::offset, DigestFetchState::old_entry, DigestFetchState::old_sc, DigestFetchState::pd, peerDigestFetchedEnough(), StoreEntry::releaseRequest(), MemObject::request, Store::Root(), DigestFetchState::sc, Http::scNone, Http::scNotModified, Http::scOkay, size, HttpReply::sline, squid_curtime, DigestFetchState::state, Http::StatusLine::status(), storeUnregister(), and StoreEntry::unlock().
Referenced by peerDigestHandleReply().
◆ peerDigestFetchSetStats()
|
static |
Definition at line 693 of file peer_digest.cc.
References assert, DigestFetchState::bytes, StatCounters::cd, debugs, DigestFetchState::entry, DigestFetchState::expires, StoreEntry::expires, StatCounters::kbytes_recv, StatCounters::kbytes_sent, StoreEntry::lastModified(), StoreEntry::mem_obj, DigestFetchState::msg, StatCounters::msgs_recv, StatCounters::msgs_sent, HttpRequest::prefixLen(), DigestFetchState::recv, DigestFetchState::request, DigestFetchState::resp_time, DigestFetchState::sent, MemObject::size(), squid_curtime, DigestFetchState::start_time, and statCounter.
Referenced by finishAndDeleteFetch().
◆ peerDigestHandleReply()
|
static |
Definition at line 324 of file peer_digest.cc.
References assert, store_client::atEof(), DigestFetchState::buf, DigestFetchState::bufofs, cbdataReferenceValid(), StoreIOBuffer::data, DIGEST_READ_CBLOCK, DIGEST_READ_MASK, DIGEST_READ_NONE, DIGEST_READ_REPLY, DigestFetchState::entry, StoreIOBuffer::error, fatal(), finishAndDeleteFetch(), StoreIOBuffer::flags, StoreIOBuffer::length, StoreIOBuffer::offset, DigestFetchState::offset, DigestFetchState::pd, peerDigestFetchedEnough(), peerDigestFetchReply(), peerDigestHandleReply, peerDigestSwapInCBlock(), peerDigestSwapInMask(), DigestFetchState::sc, SM_PAGE_SIZE, DigestFetchState::state, and storeClientCopy().
◆ peerDigestIncDelay()
|
static |
Definition at line 143 of file peer_digest.cc.
References assert, PeerDigestReqMinGap, PeerDigest::retry_delay, and PeerDigest::times.
Referenced by PeerDigest::noteFetchFinished().
◆ peerDigestNeeded()
void peerDigestNeeded | ( | PeerDigest * | pd | ) |
Definition at line 130 of file peer_digest.cc.
References assert, PeerDigest::cd, PeerDigest::flags, PeerDigest::needed, peerDigestSetCheck(), squid_curtime, and PeerDigest::times.
Referenced by peerDigestLookup().
◆ peerDigestNewDelay()
|
static |
Definition at line 154 of file peer_digest.cc.
References assert, StoreEntry::expires, PeerDigestReqMinGap, and squid_curtime.
Referenced by PeerDigest::noteFetchFinished().
◆ peerDigestRequest()
|
static |
Definition at line 226 of file peer_digest.cc.
References Http::ACCEPT, assert, DigestFetchState::buf, RequestFlags::cachable, StoreIOBuffer::data, debugs, EBIT_TEST, StoreEntry::ensureMemObject(), DigestFetchState::entry, PeerDigest::flags, HttpRequest::flags, StoreEntry::flags, HttpRequest::FromUrlXXX(), FwdState::fwdStart(), CbcPointer< Cbc >::get(), Http::Message::header, internalRemoteUri(), KEY_PRIVATE, StoreEntry::lastModified(), HttpHeader::len, StoreIOBuffer::length, StoreEntry::lock(), HttpRequest::method, StoreIOBuffer::offset, DigestFetchState::old_entry, DigestFetchState::old_sc, pd_last_req_time, PeerDigest::peer, peerDigestHandleReply, HttpHeader::putStr(), RequestFlags::refresh, PeerDigest::req_result, PeerDigest::requested, safe_free, DigestFetchState::sc, SM_PAGE_SIZE, squid_curtime, storeClientCopy(), storeClientListAdd(), storeCreateEntry(), StoreDigestFileName, StoreDigestMimeStr, storeGetPublicByRequest(), SupportOrVeto::support(), PeerDigest::times, HttpRequest::url, AnyP::Uri::userInfo(), and xstrdup.
Referenced by peerDigestCheck().
◆ peerDigestSetCBlock()
|
static |
Definition at line 729 of file peer_digest.cc.
References assert, StoreDigestCBlock::bits_per_entry, CacheDigestHashFuncCount, CacheDigestVer, CacheDigest::CalcMaskSize(), StoreDigestCBlock::capacity, PeerDigest::cd, StatCounters::cd, StoreDigestCBlock::count, CacheDigest::count, Version::current, DBG_CRITICAL, DBG_IMPORTANT, debugs, StoreDigestCBlock::del_count, CacheDigest::del_count, StoreDigestCBlock::hash_func_count, PeerDigest::host, StoreDigestCBlock::mask_size, CacheDigest::mask_size, StatCounters::memory, Version::required, statCounter, StoreDigestCBlock::ver, and xpercentInt().
Referenced by peerDigestSwapInCBlock().
◆ peerDigestSetCheck()
|
static |
Definition at line 166 of file peer_digest.cc.
References debugs, eventAdd(), PeerDigest::host, PeerDigest::next_check, peerDigestCheck, squid_curtime, and PeerDigest::times.
Referenced by PeerDigest::noteFetchFinished(), peerDigestCheck(), and peerDigestNeeded().
◆ peerDigestStatsReport()
void peerDigestStatsReport | ( | const PeerDigest * | pd, |
StoreEntry * | e | ||
) |
Definition at line 842 of file peer_digest.cc.
References appendTime, assert, cacheDigestGuessStatsReport(), cacheDigestReport(), PeerDigest::cd, f2s, PeerDigest::guess, PeerDigest::host, PeerDigest::recv, PeerDigest::req_delay, PeerDigest::req_result, PeerDigest::retry_delay, PeerDigest::sent, SQUIDSBUFPH, SQUIDSBUFPRINT, PeerDigest::stats, storeAppendPrintf(), and PeerDigest::times.
Referenced by statPeerSelect().
◆ peerDigestSwapInCBlock()
int peerDigestSwapInCBlock | ( | void * | data, |
char * | buf, | ||
ssize_t | size | ||
) |
Definition at line 512 of file peer_digest.cc.
References assert, DIGEST_READ_CBLOCK, DIGEST_READ_MASK, DigestFetchState::entry, finishAndDeleteFetch(), CbcPointer< Cbc >::get(), StoreEntry::mem_obj, DigestFetchState::pd, peerDigestFetchedEnough(), peerDigestSetCBlock(), size, SM_PAGE_SIZE, DigestFetchState::state, and StoreDigestCBlockSize.
Referenced by peerDigestHandleReply().
◆ peerDigestSwapInMask()
int peerDigestSwapInMask | ( | void * | data, |
char * | buf, | ||
ssize_t | size | ||
) |
Definition at line 550 of file peer_digest.cc.
References assert, debugs, CbcPointer< Cbc >::get(), DigestFetchState::mask_offset, DigestFetchState::pd, peerDigestFetchedEnough(), and size.
Referenced by peerDigestHandleReply().
◆ peerDigestUseful()
|
static |
Definition at line 821 of file peer_digest.cc.
References PeerDigest::cd, DBG_CRITICAL, debugs, PeerDigest::host, and CacheDigest::usedMaskPercent().
Referenced by peerDigestFetchedEnough().
◆ saneDiff()
|
static |
Definition at line 836 of file peer_digest.cc.
References squid_curtime.
Variable Documentation
◆ CacheDigestVer
const Version CacheDigestVer = { 5, 3 } |
Definition at line 51 of file peer_digest.cc.
Referenced by peerDigestSetCBlock(), and storeDigestCBlockSwapOut().
◆ GlobDigestReqMinGap
|
static |
Definition at line 58 of file peer_digest.cc.
Referenced by peerDigestCheck().
◆ pd_last_req_time
|
static |
Definition at line 62 of file peer_digest.cc.
Referenced by peerDigestCheck(), and peerDigestRequest().
◆ peerDigestCheck
|
static |
Definition at line 38 of file peer_digest.cc.
Referenced by peerDigestSetCheck(), and PeerDigest::~PeerDigest().
◆ peerDigestHandleReply
|
static |
Definition at line 40 of file peer_digest.cc.
Referenced by peerDigestHandleReply(), and peerDigestRequest().
◆ PeerDigestReqMinGap
|
static |
Definition at line 56 of file peer_digest.cc.
Referenced by peerDigestCheck(), peerDigestIncDelay(), and peerDigestNewDelay().
Introduction
- About Squid
- Why Squid?
- Squid Developers
- How to Donate
- How to Help Out
- Getting Squid
- Squid Source Packages
- Squid Deployment Case-Studies
- Squid Software Foundation
Documentation
- Quick Setup
- Configuration:
- FAQ and Wiki
- Guide Books:
- Non-English
- More...
Support
- Security Advisories
- Bugzilla Database
- Mailing lists
- Contacting us
- Commercial services
- Project Sponsors
- Squid-based products