]> git.ipfire.org Git - thirdparty/squid.git/blame - src/fs/coss/store_coss.h
Bug #1768: Redundant DNS PTR lookups
[thirdparty/squid.git] / src / fs / coss / store_coss.h
CommitLineData
cd748f27 1#ifndef __COSS_H__
2#define __COSS_H__
3
d3b3ab85 4#include "SwapDir.h"
5
cd748f27 6#ifndef COSS_MEMBUF_SZ
7#define COSS_MEMBUF_SZ 1048576
8#endif
9
c94af0b9 10/* Note that swap_filen in sio/e are actually disk offsets too! */
11
12/* What we're doing in storeCossAllocate() */
cd748f27 13#define COSS_ALLOC_NOTIFY 0
14#define COSS_ALLOC_ALLOCATE 1
15#define COSS_ALLOC_REALLOC 2
62e76326 16
d3b3ab85 17class CossSwapDir;
62e76326 18
b9ae18aa 19class CossMemBuf
1a224843 20{
1a224843 21
b9ae18aa 22public:
23 void describe(int level, int line);
24 void maybeWrite(CossSwapDir * SD);
25 void write(CossSwapDir * SD);
c94af0b9 26 dlink_node node;
27 size_t diskstart; /* in blocks */
28 size_t diskend; /* in blocks */
d3b3ab85 29 CossSwapDir *SD;
cd748f27 30 int lockcount;
31 char buffer[COSS_MEMBUF_SZ];
62e76326 32
33 struct _cossmembuf_flags
34 {
35
36unsigned int full:
37 1;
38
39unsigned int writing:
40 1;
41 }
42
43 flags;
cd748f27 44};
45
62e76326 46struct _cossindex
47{
6a566b9c 48 /* Note: the dlink_node MUST be the first member of the structure.
49 * This member is later pointer typecasted to coss_index_node *.
50 */
51 dlink_node node;
cd748f27 52};
53
54
d3b3ab85 55
cd748f27 56/* Per-storeiostate info */
62e76326 57
e877aaac 58class CossState : public StoreIOState
62e76326 59{
60
d3b3ab85 61public:
b001e822 62 MEMPROXY_CLASS(CossState);
d3b3ab85 63 CossState(CossSwapDir *);
64 ~CossState();
65
cd748f27 66 char *readbuffer;
67 char *requestbuf;
68 size_t requestlen;
c94af0b9 69 size_t requestoffset; /* in blocks */
70 sfileno reqdiskoffset; /* in blocks */
62e76326 71
72 struct
73 {
74
75unsigned int reading:
76 1;
77
78unsigned int writing:
79 1;
80 }
81
82 flags;
1a224843 83
b9ae18aa 84 CossMemBuf *locked_membuf;
d3b3ab85 85 size_t st_size;
86 void read_(char *buf, size_t size, off_t offset, STRCB * callback, void *callback_data);
528b2c61 87 void write(char const *buf, size_t size, off_t offset, FREE * free_func);
d3b3ab85 88 void close();
b9ae18aa 89 void doCallback(int errflag);
90 void lockMemBuf();
d3b3ab85 91
92 CossSwapDir *SD;
cd748f27 93};
94
b001e822 95MEMPROXY_CLASS_INLINE(CossState)
96
6a566b9c 97typedef struct _cossindex CossIndexNode;
cd748f27 98
99/* Whether the coss system has been setup or not */
100extern int coss_initialised;
a3efa961 101extern MemAllocator *coss_membuf_pool;
102extern MemAllocator *coss_index_pool;
cd748f27 103
b9ae18aa 104#include "DiskIO/ReadRequest.h"
105
106class CossRead : public ReadRequest
d3b3ab85 107{
62e76326 108
d3b3ab85 109public:
b9ae18aa 110 void * operator new (size_t);
111 void operator delete (void *);
112 CossRead(ReadRequest const &base, StoreIOState::Pointer anSio) : ReadRequest(base) , sio(anSio) {}
113
114 StoreIOState::Pointer sio;
115
116private:
117 CBDATA_CLASS(CossRead);
d3b3ab85 118};
cd748f27 119
b9ae18aa 120#include "DiskIO/WriteRequest.h"
121
122class CossWrite : public WriteRequest
123{
124
125public:
126 void * operator new (size_t);
127 void operator delete (void *);
128 CossWrite(WriteRequest const &base, CossMemBuf *aBuf) : WriteRequest(base) , membuf(aBuf) {}
129
130 CossMemBuf *membuf;
131
132private:
133 CBDATA_CLASS(CossWrite);
134};
1a224843 135
cd748f27 136#endif