PeerDigest.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 1996-2023 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 #ifndef SQUID_SRC_PEERDIGEST_H
10 #define SQUID_SRC_PEERDIGEST_H
11 
12 #if USE_CACHE_DIGESTS
13 
14 #include "cbdata.h"
15 #include "StatCounters.h"
16 
17 class Version
18 {
19 public:
20  short int current; /* current version */
21  short int required; /* minimal version that can safely handle current version */
22 };
23 
24 /* digest control block; used for transmission and storage */
25 
27 {
28 public:
30  int capacity;
31  int count;
32  int del_count;
33  int mask_size;
34  unsigned char bits_per_entry;
35  unsigned char hash_func_count;
36  short int reserved_short;
37  int reserved[32 - 6];
38 };
39 
40 class HttpRequest;
41 class PeerDigest;
42 class store_client;
43 
45 {
47 
48 public:
51 
58  int offset;
59  uint32_t mask_offset;
60  time_t start_time;
61  time_t resp_time;
62  time_t expires;
63 
64  struct {
65  int msg;
66  int bytes;
67  } sent, recv;
68 
70  ssize_t bufofs;
72 };
73 
75 {
77 
78 public:
80  ~PeerDigest();
81 
84  void noteFetchFinished(const DigestFetchState &, const char *outcomeDescription, bool sawError);
85 
87  CacheDigest *cd = nullptr;
88  const SBuf host;
89  const char *req_result = nullptr;
91  struct {
92  bool needed = false;
93  bool usable = false;
94  bool requested = false;
95  } flags;
96 
97  struct {
98  /* all times are absolute unless augmented with _delay */
99  time_t initialized = 0; /* creation */
100  time_t needed = 0; /* first lookup/use by a peer */
101  time_t next_check = 0; /* next scheduled check/refresh event */
102  time_t retry_delay = 0; /* delay before re-checking _invalid_ digest */
103  time_t requested = 0; /* requested a fresh copy of a digest */
104  time_t req_delay = 0; /* last request response time */
105  time_t received = 0; /* received the current copy of a digest */
106  time_t disabled = 0; /* disabled for good */
107  } times;
108 
109  struct {
111  int used_count = 0;
112 
113  struct {
114  int msgs = 0;
116  } sent, recv;
117  } stats;
118 };
119 
120 extern const Version CacheDigestVer;
121 
122 void peerDigestNeeded(PeerDigest * pd);
124 void peerDigestStatsReport(const PeerDigest * pd, StoreEntry * e);
125 
126 #endif /* USE_CACHE_DIGESTS */
127 
128 #endif /* SQUID_SRC_PEERDIGEST_H */
129 
bool usable
Definition: PeerDigest.h:93
unsigned char bits_per_entry
Definition: PeerDigest.h:34
#define SM_PAGE_SIZE
Definition: defines.h:63
bool needed
Definition: PeerDigest.h:92
const Version CacheDigestVer
Definition: peer_digest.cc:51
time_t req_delay
Definition: PeerDigest.h:104
digest_read_state_t state
Definition: PeerDigest.h:71
digest_read_state_t
Definition: enums.h:197
StoreEntry * entry
Definition: PeerDigest.h:53
CacheDigest * cd
Definition: PeerDigest.h:87
time_t disabled
Definition: PeerDigest.h:106
time_t next_check
Definition: PeerDigest.h:101
ByteCounter kbytes
Definition: PeerDigest.h:115
bool requested
Definition: PeerDigest.h:94
#define CBDATA_CLASS(type)
Definition: cbdata.h:289
Definition: SBuf.h:93
void peerDigestNotePeerGone(PeerDigest *pd)
store_client * old_sc
Definition: PeerDigest.h:56
time_t start_time
Definition: PeerDigest.h:60
struct DigestFetchState::@74 sent
int used_count
Definition: PeerDigest.h:111
void peerDigestNeeded(PeerDigest *pd)
Definition: peer_digest.cc:130
const SBuf host
copy of peer->host
Definition: PeerDigest.h:88
uint32_t mask_offset
Definition: PeerDigest.h:59
CbcPointer< PeerDigest > pd
Definition: PeerDigest.h:52
StoreEntry * old_entry
Definition: PeerDigest.h:54
struct DigestFetchState::@74 recv
struct PeerDigest::@77 stats
CbcPointer< CachePeer > peer
pointer back to peer structure, argh
Definition: PeerDigest.h:86
store_client * sc
Definition: PeerDigest.h:55
struct PeerDigest::@75 flags
void noteFetchFinished(const DigestFetchState &, const char *outcomeDescription, bool sawError)
Definition: peer_digest.cc:653
short int required
Definition: PeerDigest.h:21
time_t resp_time
Definition: PeerDigest.h:61
time_t initialized
Definition: PeerDigest.h:99
time_t retry_delay
Definition: PeerDigest.h:102
PeerDigest(CachePeer *)
Definition: peer_digest.cc:64
void peerDigestStatsReport(const PeerDigest *pd, StoreEntry *e)
Definition: peer_digest.cc:842
counter for accumulating byte values
Definition: ByteCounter.h:13
int reserved[32 - 6]
Definition: PeerDigest.h:37
HttpRequest * request
Definition: PeerDigest.h:57
short int current
Definition: PeerDigest.h:20
char buf[SM_PAGE_SIZE]
Definition: PeerDigest.h:69
const char * req_result
Definition: PeerDigest.h:89
struct PeerDigest::@76 times
CacheDigestGuessStats guess
Definition: PeerDigest.h:110
short int reserved_short
Definition: PeerDigest.h:36
unsigned char hash_func_count
Definition: PeerDigest.h:35
DigestFetchState(PeerDigest *, HttpRequest *)
Definition: peer_digest.cc:75
time_t received
Definition: PeerDigest.h:105
struct PeerDigest::@77::@78 recv
struct PeerDigest::@77::@78 sent
ssize_t bufofs
Definition: PeerDigest.h:70

 

Introduction

Documentation

Support

Miscellaneous