class CacheDigestGuessStats;
class StoreEntry;
+// currently a POD
class CacheDigest
{
public:
int del_count; /* number of deletions performed so far */
};
-extern CacheDigest *cacheDigestCreate(int capacity, int bpe);
-extern void cacheDigestDestroy(CacheDigest * cd);
-extern CacheDigest *cacheDigestClone(const CacheDigest * cd);
-extern void cacheDigestClear(CacheDigest * cd);
-extern void cacheDigestChangeCap(CacheDigest * cd, int new_cap);
-extern int cacheDigestTest(const CacheDigest * cd, const cache_key * key);
-extern void cacheDigestAdd(CacheDigest * cd, const cache_key * key);
-extern void cacheDigestDel(CacheDigest * cd, const cache_key * key);
-extern size_t cacheDigestCalcMaskSize(int cap, int bpe);
-extern int cacheDigestBitUtil(const CacheDigest * cd);
-extern void cacheDigestGuessStatsUpdate(CacheDigestGuessStats * stats, int real_hit, int guess_hit);
-extern void cacheDigestGuessStatsReport(const CacheDigestGuessStats * stats, StoreEntry * sentry, const char *label);
-extern void cacheDigestReport(CacheDigest * cd, const char *label, StoreEntry * e);
+CacheDigest *cacheDigestCreate(int capacity, int bpe);
+void cacheDigestDestroy(CacheDigest * cd);
+CacheDigest *cacheDigestClone(const CacheDigest * cd);
+void cacheDigestClear(CacheDigest * cd);
+void cacheDigestChangeCap(CacheDigest * cd, int new_cap);
+int cacheDigestTest(const CacheDigest * cd, const cache_key * key);
+void cacheDigestAdd(CacheDigest * cd, const cache_key * key);
+void cacheDigestDel(CacheDigest * cd, const cache_key * key);
+size_t cacheDigestCalcMaskSize(int cap, int bpe);
+int cacheDigestBitUtil(const CacheDigest * cd);
+void cacheDigestGuessStatsUpdate(CacheDigestGuessStats * stats, int real_hit, int guess_hit);
+void cacheDigestGuessStatsReport(const CacheDigestGuessStats * stats, StoreEntry * sentry, const char *label);
+void cacheDigestReport(CacheDigest * cd, const char *label, StoreEntry * e);
#endif /* SQUID_CACHEDIGEST_H_ */
class acl_access;
class PeerDigest;
+// currently a POD
class CachePeer
{
public:
class HttpHdrSc;
class Packer;
class StoreEntry;
-class String;
/* constant attributes of http header fields */
hoEnd
} http_hdr_owner_type;
+// currently a POD
class HttpHeaderFieldAttrs
{
public:
#include "SquidString.h"
#include "HttpHeaderFieldStat.h"
-/* compiled version of HttpHeaderFieldAttrs plus stats */
+/// compiled version of HttpHeaderFieldAttrs plus stats. Currently a POD.
class HttpHeaderFieldInfo
{
public:
*
*/
-/// per field statistics
+/// per field statistics. Currently a POD.
class HttpHeaderFieldStat
{
public:
if (!hms)
return 1;
- const header_mangler *hm = hms->find(*e);
+ const headerMangler *hm = hms->find(*e);
/* mangler or checklist went away. default allow */
if (!hm || !hm->access_list) {
}
static
-void header_mangler_clean(header_mangler &m)
+void header_mangler_clean(headerMangler &m)
{
aclDestroyAccessList(&m.access_list);
safe_free(m.replacement);
static
void header_mangler_dump_access(StoreEntry * entry, const char *option,
- const header_mangler &m, const char *name)
+ const headerMangler &m, const char *name)
{
if (m.access_list != NULL) {
storeAppendPrintf(entry, "%s ", option);
static
void header_mangler_dump_replacement(StoreEntry * entry, const char *option,
- const header_mangler &m, const char *name)
+ const headerMangler &m, const char *name)
{
if (m.replacement)
storeAppendPrintf(entry, "%s %s %s\n", option, name, m.replacement);
header_mangler_dump_replacement(entry, name, all, "All");
}
-header_mangler *
+headerMangler *
HeaderManglers::track(const char *name)
{
int id = httpHeaderIdByNameDef(name, strlen(name));
id = HDR_OTHER;
}
- header_mangler *m = NULL;
+ headerMangler *m = NULL;
if (id == HDR_ENUM_END) {
m = &all;
} else if (id == HDR_BAD_HDR) {
{
// for backword compatibility, we allow replacements to be configured
// for headers w/o access rules, but such replacements are ignored
- header_mangler *m = track(name);
+ headerMangler *m = track(name);
safe_free(m->replacement); // overwrite old value if any
m->replacement = xstrdup(value);
}
-const header_mangler *
+const headerMangler *
HeaderManglers::find(const HttpHeaderEntry &e) const
{
// a known header with a configured ACL list
#include <string>
#endif
+class acl_access;
+class ACLList;
class HeaderWithAcl;
+class HttpHeader;
+class HttpHeaderFieldInfo;
+class HttpRequest;
+class StoreEntry;
+class String;
+
typedef std::list<HeaderWithAcl> HeaderWithAclList;
-class acl_access;
-class header_mangler
+// Currently a POD
+class headerMangler
{
public:
acl_access *access_list;
char *replacement;
};
-class StoreEntry;
-
-/// A collection of header_mangler objects for a given message kind.
+/// A collection of headerMangler objects for a given message kind.
class HeaderManglers
{
public:
~HeaderManglers();
/// returns a header mangler for field e or nil if none was specified
- const header_mangler *find(const HttpHeaderEntry &e) const;
+ const headerMangler *find(const HttpHeaderEntry &e) const;
/// returns a mangler for the named header (known or custom)
- header_mangler *track(const char *name);
+ headerMangler *track(const char *name);
/// updates mangler for the named header with a replacement value
void setReplacement(const char *name, const char *replacementValue);
private:
/// a name:mangler map; optimize: use unordered map or some such
- typedef std::map<std::string, header_mangler> ManglersByName;
+ typedef std::map<std::string, headerMangler> ManglersByName;
/// one mangler for each known header
- header_mangler known[HDR_ENUM_END];
+ headerMangler known[HDR_ENUM_END];
/// one mangler for each custom header
ManglersByName custom;
/// configured if some mangling ACL applies to all header names
- header_mangler all;
+ headerMangler all;
private:
/* not implemented */
HeaderManglers &operator =(const HeaderManglers &);
};
-class ACLList;
class HeaderWithAcl
{
public:
bool quoted;
};
-extern int httpHeaderParseOffset(const char *start, int64_t * off);
-
-class HttpHeader;
-class HttpHeaderFieldInfo;
-class HttpRequest;
-class String;
+int httpHeaderParseOffset(const char *start, int64_t * off);
-extern HttpHeaderFieldInfo *httpHeaderBuildFieldsInfo(const HttpHeaderFieldAttrs * attrs, int count);
-extern void httpHeaderDestroyFieldsInfo(HttpHeaderFieldInfo * info, int count);
-extern http_hdr_type httpHeaderIdByName(const char *name, size_t name_len, const HttpHeaderFieldInfo * attrs, int end);
-extern http_hdr_type httpHeaderIdByNameDef(const char *name, int name_len);
-extern const char *httpHeaderNameById(int id);
-extern int httpHeaderHasConnDir(const HttpHeader * hdr, const char *directive);
-extern int httpHeaderParseInt(const char *start, int *val);
-extern void httpHeaderPutStrf(HttpHeader * hdr, http_hdr_type id, const char *fmt,...) PRINTF_FORMAT_ARG3;
+HttpHeaderFieldInfo *httpHeaderBuildFieldsInfo(const HttpHeaderFieldAttrs * attrs, int count);
+void httpHeaderDestroyFieldsInfo(HttpHeaderFieldInfo * info, int count);
+http_hdr_type httpHeaderIdByName(const char *name, size_t name_len, const HttpHeaderFieldInfo * attrs, int end);
+http_hdr_type httpHeaderIdByNameDef(const char *name, int name_len);
+const char *httpHeaderNameById(int id);
+int httpHeaderHasConnDir(const HttpHeader * hdr, const char *directive);
+int httpHeaderParseInt(const char *start, int *val);
+void httpHeaderPutStrf(HttpHeader * hdr, http_hdr_type id, const char *fmt,...) PRINTF_FORMAT_ARG3;
-extern const char *getStringPrefix(const char *str, const char *end);
+const char *getStringPrefix(const char *str, const char *end);
-extern void httpHdrMangleList(HttpHeader *, HttpRequest *, int req_or_rep);
+void httpHdrMangleList(HttpHeader *, HttpRequest *, int req_or_rep);
#endif
*
*/
+/// IO statistics. Currently a POD.
class IoStats
{
public:
int writes;
int write_hist[histSize];
}
-
Http, Ftp, Gopher;
};
*
*/
+/// a representation of a refresh pattern. Currently a POD.
class RefreshPattern
{
public:
*
*/
+/// list of regular expressions. Currently a POD.
class RegexList
{
public:
class PortCfg;
}
+/// the representation of the configuration. POD.
class SquidConfig
{
public:
#include "ip/Address.h"
#include "acl/Acl.h"
+/// list of address-based ACLs. Currently a POD.
class AclAddress
{
public:
*/
#include "err_type.h"
-#include "acl/AclNameList.h"
+class AclNameList;
+
+/// deny_info representation. Currently a POD.
class AclDenyInfoList
{
public:
*/
#include "defines.h"
-//TODO: convert to a std::list<string>
+
+/// list of name-based ACLs. Currently a POD.
class AclNameList
{
public:
char name[ACL_NAME_SZ];
AclNameList *next;
};
+// TODO: convert to a std::list<string>
#endif /* SQUID_ACLNAMELIST_H_ */
if (!*pm)
*pm = new HeaderManglers;
HeaderManglers *manglers = *pm;
- header_mangler *mangler = manglers->track(t);
+ headerMangler *mangler = manglers->track(t);
assert(mangler);
parse_acl_access(&mangler->access_list);
}
#include "hash.h"
class CachePeer;
+class HttpRequest;
+class netdbEntry;
+class StoreEntry;
namespace Ip
{
class Address;
};
-class StoreEntry;
-class HttpRequest;
-class netdbEntry;
-
+// POD
class net_db_name
{
public:
netdbEntry *net_db_entry;
};
+// POD
class net_db_peer
{
public:
time_t expires;
};
+// POD
class netdbEntry
{
public:
int n_peers;
};
-extern void netdbInit(void);
+void netdbInit(void);
-extern void netdbHandlePingReply(const Ip::Address &from, int hops, int rtt);
-extern void netdbPingSite(const char *hostname);
+void netdbHandlePingReply(const Ip::Address &from, int hops, int rtt);
+void netdbPingSite(const char *hostname);
void netdbDump(StoreEntry *);
-extern void netdbFreeMemory(void);
-extern int netdbHostHops(const char *host);
-extern int netdbHostRtt(const char *host);
-extern void netdbUpdatePeer(HttpRequest *, CachePeer * e, int rtt, int hops);
+void netdbFreeMemory(void);
+int netdbHostHops(const char *host);
+int netdbHostRtt(const char *host);
+void netdbUpdatePeer(HttpRequest *, CachePeer * e, int rtt, int hops);
-extern void netdbDeleteAddrNetwork(Ip::Address &addr);
-extern void netdbBinaryExchange(StoreEntry *);
-extern void netdbExchangeStart(void *);
+void netdbDeleteAddrNetwork(Ip::Address &addr);
+void netdbBinaryExchange(StoreEntry *);
+void netdbExchangeStart(void *);
-extern void netdbExchangeUpdatePeer(Ip::Address &, CachePeer *, double, double);
-extern CachePeer *netdbClosestParent(HttpRequest *);
-extern void netdbHostData(const char *host, int *samp, int *rtt, int *hops);
+void netdbExchangeUpdatePeer(Ip::Address &, CachePeer *, double, double);
+CachePeer *netdbClosestParent(HttpRequest *);
+void netdbHostData(const char *host, int *samp, int *rtt, int *hops);
#endif /* ICMP_NET_DB_H */
class Format;
}
+/// representaiton of a custom log directive. Currently a POD.
class CustomLog
{
public:
class wordlist;
namespace Mgr {
-//TODO: refactor into a std::list-backed proper list.
+//TODO: refactor into a std::list
+/// list of cachemgr password authorization definitions. Currently a POD.
class ActionPasswordList
{
public:
class CachePeer;
class StoreEntry;
-extern CachePeer *getFirstPeer(void);
-extern CachePeer *getFirstUpParent(HttpRequest *);
-extern CachePeer *getNextPeer(CachePeer *);
-extern CachePeer *getSingleParent(HttpRequest *);
-extern int neighborsCount(HttpRequest *);
-extern int neighborsUdpPing(HttpRequest *,
- StoreEntry *,
- IRCB * callback,
- void *data,
- int *exprep,
- int *timeout);
-extern void neighborAddAcl(const char *, const char *);
+CachePeer *getFirstPeer(void);
+CachePeer *getFirstUpParent(HttpRequest *);
+CachePeer *getNextPeer(CachePeer *);
+CachePeer *getSingleParent(HttpRequest *);
+int neighborsCount(HttpRequest *);
+int neighborsUdpPing(HttpRequest *,
+ StoreEntry *,
+ IRCB * callback,
+ void *data,
+ int *exprep,
+ int *timeout);
+void neighborAddAcl(const char *, const char *);
-extern void neighborsUdpAck(const cache_key *, icp_common_t *, const Ip::Address &);
-extern void neighborAdd(const char *, const char *, int, int, int, int, int);
-extern void neighbors_init(void);
+void neighborsUdpAck(const cache_key *, icp_common_t *, const Ip::Address &);
+void neighborAdd(const char *, const char *, int, int, int, int, int);
+void neighbors_init(void);
#if USE_HTCP
-extern void neighborsHtcpClear(StoreEntry *, const char *, HttpRequest *, const HttpRequestMethod &, htcp_clr_reason);
+void neighborsHtcpClear(StoreEntry *, const char *, HttpRequest *, const HttpRequestMethod &, htcp_clr_reason);
#endif
-extern CachePeer *peerFindByName(const char *);
-extern CachePeer *peerFindByNameAndPort(const char *, unsigned short);
-extern CachePeer *getDefaultParent(HttpRequest * request);
-extern CachePeer *getRoundRobinParent(HttpRequest * request);
-extern CachePeer *getWeightedRoundRobinParent(HttpRequest * request);
-extern void peerClearRRStart(void);
-extern void peerClearRR(void);
-extern lookup_t peerDigestLookup(CachePeer * p, HttpRequest * request);
-extern CachePeer *neighborsDigestSelect(HttpRequest * request);
-extern void peerNoteDigestLookup(HttpRequest * request, CachePeer * p, lookup_t lookup);
-extern void peerNoteDigestGone(CachePeer * p);
-extern int neighborUp(const CachePeer * e);
-extern CBDUNL peerDestroy;
-extern const char *neighborTypeStr(const CachePeer * e);
-extern peer_t neighborType(const CachePeer *, const HttpRequest *);
-extern void peerConnectFailed(CachePeer *);
-extern void peerConnectSucceded(CachePeer *);
-extern void dump_peer_options(StoreEntry *, CachePeer *);
-extern int peerHTTPOkay(const CachePeer *, HttpRequest *);
+CachePeer *peerFindByName(const char *);
+CachePeer *peerFindByNameAndPort(const char *, unsigned short);
+CachePeer *getDefaultParent(HttpRequest * request);
+CachePeer *getRoundRobinParent(HttpRequest * request);
+CachePeer *getWeightedRoundRobinParent(HttpRequest * request);
+void peerClearRRStart(void);
+void peerClearRR(void);
+lookup_t peerDigestLookup(CachePeer * p, HttpRequest * request);
+CachePeer *neighborsDigestSelect(HttpRequest * request);
+void peerNoteDigestLookup(HttpRequest * request, CachePeer * p, lookup_t lookup);
+void peerNoteDigestGone(CachePeer * p);
+int neighborUp(const CachePeer * e);
+CBDUNL peerDestroy;
+const char *neighborTypeStr(const CachePeer * e);
+peer_t neighborType(const CachePeer *, const HttpRequest *);
+void peerConnectFailed(CachePeer *);
+void peerConnectSucceded(CachePeer *);
+void dump_peer_options(StoreEntry *, CachePeer *);
+int peerHTTPOkay(const CachePeer *, HttpRequest *);
-extern CachePeer *whichPeer(const Ip::Address &from);
+CachePeer *whichPeer(const Ip::Address &from);
#endif /* SQUID_NEIGHBORS_H_ */
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
*
*/
+
+// currently a POD
class StoreRebuildData
{
public:
#ifndef SQUID_STRUCTS_H
#define SQUID_STRUCTS_H
+#define PEER_MULTICAST_SIBLINGS 1
+
#include "cbdata.h"
#include "defines.h"
#include "dlink.h"
#include "hash.h"
-#include "ip/Address.h"
-
-/* needed for the global config */
#include "HttpHeader.h"
#include "HttpHeaderTools.h"
-
-#define PEER_MULTICAST_SIBLINGS 1
+#include "ip/Address.h"
class ACLChecklist;
+class ACLList;
+class PeerDigest;
#if SQUID_SNMP
#include "snmp_session.h"
+// POD
class snmp_request_t
{
public:
struct snmp_session session;
};
-#endif
-
-class ACLList;
+#endif /* SQUID_SNMP */
struct acl_tos {
acl_tos *next;
#include "HelperChildConfig.h"
-/* forward decl for SquidConfig, see RemovalPolicy.h */
-
class CpuAffinityMap;
+// POD
class close_handler
{
public:
close_handler *next;
};
+// POD
class dread_ctrl
{
public:
void *client_data;
};
+// POD
class dwrite_q
{
public:
off_t offset;
};
+// POD
class http_state_flags
{
public:
unsigned int sentLastChunk:1; ///< do not try to write last-chunk again
};
+// POD
class domain_ping
{
public:
domain_ping *next;
};
+// POD
class domain_type
{
public:
domain_type *next;
};
-class PeerDigest;
-
#if USE_SSL
struct _sslproxy_cert_sign {
int alg;