]> git.ipfire.org Git - thirdparty/squid.git/blame - src/DiskIO/AIO/AIODiskFile.h
Docs: Copyright updates for 2018 (#114)
[thirdparty/squid.git] / src / DiskIO / AIO / AIODiskFile.h
CommitLineData
59b2d47f 1/*
5b74111a 2 * Copyright (C) 1996-2018 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
d9691f09 12#if HAVE_DISKIO_MODULE_AIO
2513178d 13
aa839030 14#include "cbdata.h"
d9691f09 15#include "DiskIO/AIO/async_io.h"
602d9612 16#include "DiskIO/DiskFile.h"
582c2af2 17#include "SquidString.h"
59b2d47f 18
b9ae18aa 19class AIODiskIOStrategy;
59b2d47f 20
b9ae18aa 21class AIODiskFile : public DiskFile
59b2d47f 22{
5c2f68b7 23 CBDATA_CLASS(AIODiskFile);
59b2d47f 24
25public:
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
49private:
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
d9691f09 59#endif /* HAVE_DISKIO_MODULE_AIO */
b9ae18aa 60#endif /* SQUID_AIODISKFILE_H */
f53969cc 61