]>
Commit | Line | Data |
---|---|---|
59b2d47f | 1 | /* |
bbc27441 | 2 | * Copyright (C) 1996-2014 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 | ||
b9ae18aa | 9 | #ifndef SQUID_AIODISKFILE_H |
10 | #define SQUID_AIODISKFILE_H | |
59b2d47f | 11 | |
2513178d AJ |
12 | #if USE_DISKIO_AIO |
13 | ||
b9ae18aa | 14 | #include "async_io.h" |
aa839030 | 15 | #include "cbdata.h" |
602d9612 | 16 | #include "DiskIO/DiskFile.h" |
582c2af2 | 17 | #include "SquidString.h" |
59b2d47f | 18 | |
b9ae18aa | 19 | class AIODiskIOStrategy; |
59b2d47f | 20 | |
b9ae18aa | 21 | class AIODiskFile : public DiskFile |
59b2d47f | 22 | { |
5c2f68b7 | 23 | CBDATA_CLASS(AIODiskFile); |
59b2d47f | 24 | |
25 | public: | |
59b2d47f | 26 | |
b9ae18aa | 27 | friend class AIODiskIOStrategy; |
b9ae18aa | 28 | AIODiskFile (char const *path, AIODiskIOStrategy *); |
29 | ~AIODiskFile(); | |
63be0a78 | 30 | |
31 | /// \bug the code has this as "IORequestor::Pointer callback" | |
32 | virtual void open(int flags, mode_t mode, RefCount<IORequestor> callback); | |
33 | ||
b9ae18aa | 34 | virtual void create (int, mode_t, RefCount<IORequestor>); |
35 | virtual void read(ReadRequest *); | |
36 | virtual void write(WriteRequest *); | |
37 | virtual void close (); | |
38 | virtual bool canRead() const; | |
39 | virtual bool canWrite() const; | |
40 | ||
41 | /* During migration only */ | |
42 | virtual int getFD() const; | |
43 | ||
44 | virtual bool error() const; | |
59b2d47f | 45 | |
b9ae18aa | 46 | /* Inform callers if there is IO in progress */ |
47 | virtual bool ioInProgress() const; | |
48 | ||
49 | private: | |
b9ae18aa | 50 | void error(bool const &); |
51 | int fd; | |
30abd221 | 52 | String path; |
b9ae18aa | 53 | AIODiskIOStrategy *strategy; |
54 | RefCount<IORequestor> ioRequestor; | |
55 | bool closed; | |
56 | bool error_; | |
57 | }; | |
59b2d47f | 58 | |
2513178d | 59 | #endif /* USE_DISKIO_AIO */ |
b9ae18aa | 60 | #endif /* SQUID_AIODISKFILE_H */ |
f53969cc | 61 |