]>
Commit | Line | Data |
---|---|---|
59b2d47f | 1 | /* |
f70aedc4 | 2 | * Copyright (C) 1996-2021 The Squid Software Foundation and contributors |
59b2d47f | 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. | |
59b2d47f | 7 | */ |
8 | ||
bbc27441 AJ |
9 | /* DEBUG: section 47 Store Directory Routines */ |
10 | ||
b9ae18aa | 11 | #ifndef SQUID_BLOCKINGFILE_H |
12 | #define SQUID_BLOCKINGFILE_H | |
aa839030 | 13 | |
14 | #include "cbdata.h" | |
b9ae18aa | 15 | #include "DiskIO/DiskFile.h" |
63be0a78 | 16 | #include "DiskIO/IORequestor.h" |
e1ba42a4 | 17 | #include "typedefs.h" //DRCB, DWCB |
59b2d47f | 18 | |
b9ae18aa | 19 | class BlockingFile : public DiskFile |
59b2d47f | 20 | { |
5c2f68b7 | 21 | CBDATA_CLASS(BlockingFile); |
59b2d47f | 22 | |
23 | public: | |
63be0a78 | 24 | BlockingFile(char const *path); |
b9ae18aa | 25 | ~BlockingFile(); |
63be0a78 | 26 | virtual void open(int flags, mode_t mode, RefCount<IORequestor> callback); |
27 | virtual void create(int flags, mode_t mode, RefCount<IORequestor> callback); | |
b9ae18aa | 28 | virtual void read(ReadRequest *); |
29 | virtual void write(WriteRequest *); | |
63be0a78 | 30 | virtual void close(); |
b9ae18aa | 31 | virtual bool error() const; |
32 | virtual int getFD() const { return fd;} | |
59b2d47f | 33 | |
b9ae18aa | 34 | virtual bool canRead() const; |
63be0a78 | 35 | virtual bool ioInProgress() const; |
59b2d47f | 36 | |
b9ae18aa | 37 | private: |
38 | static DRCB ReadDone; | |
39 | static DWCB WriteDone; | |
b9ae18aa | 40 | int fd; |
41 | bool closed; | |
42 | void error (bool const &); | |
43 | bool error_; | |
44 | char const *path_; | |
45 | RefCount<IORequestor> ioRequestor; | |
46 | RefCount<ReadRequest> readRequest; | |
47 | RefCount<WriteRequest> writeRequest; | |
48 | void doClose(); | |
49 | void readDone(int fd, const char *buf, int len, int errflag); | |
50 | void writeDone(int fd, int errflag, size_t len); | |
51 | }; | |
59b2d47f | 52 | |
b9ae18aa | 53 | #endif /* SQUID_BLOCKINGFILE_H */ |
f53969cc | 54 |