]>
git.ipfire.org Git - thirdparty/squid.git/blob - src/DiskIO/DiskThreads/DiskThreadsDiskFile.h
2 * Copyright (C) 1996-2014 The Squid Software Foundation and contributors
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.
9 /* DEBUG: section 79 Disk IO Routines */
11 #ifndef SQUID_DISKTHREADSDISKFILE_H
12 #define SQUID_DISKTHREADSDISKFILE_H
14 #include "DiskIO/DiskFile.h"
15 #include "DiskThreads.h"
17 class DiskThreadsDiskFile
: public DiskFile
21 DiskThreadsDiskFile(char const *path
, DiskThreadsIOStrategy
*);
22 ~DiskThreadsDiskFile();
23 virtual void open(int flags
, mode_t mode
, RefCount
<IORequestor
> callback
);
24 virtual void create(int flags
, mode_t mode
, RefCount
<IORequestor
> callback
);
25 virtual void read(ReadRequest
*);
26 virtual void write(WriteRequest
*);
28 virtual bool error() const;
29 virtual int getFD() const { return fd
;}
31 virtual bool canRead() const;
32 virtual bool canWrite() const;
33 virtual bool ioInProgress() const;
38 static AIOCB ReadDone
;
45 static AIOCB WriteDone
;
48 static DWCB WriteDone
;
54 DiskThreadsIOStrategy
*IO
;
56 static AIOCB OpenDone
;
57 void openDone(int fd
, const char *buf
, int aio_return
, int aio_errno
);
58 RefCount
<IORequestor
> ioRequestor
;
61 void readDone(int fd
, const char *buf
, int len
, int errflag
, RefCount
<ReadRequest
> request
);
62 void writeDone(int fd
, int errflag
, size_t len
, RefCount
<WriteRequest
> request
);
64 CBDATA_CLASS2(DiskThreadsDiskFile
);
67 #include "DiskIO/ReadRequest.h"
74 IoResult(RefCount
<DiskThreadsDiskFile
> aFile
, RefCount
<RT
> aRequest
) : file(aFile
), request(aRequest
) {}
76 RefCount
<DiskThreadsDiskFile
> file
;
80 CBDATA_CLASS2(IoResult
);
85 IOResult(RefCount
<RT
> aRequest
, RefCount
<DiskThreadsDiskFile
> aFile
) { return IoResult
<RT
>(aFile
, aRequest
);}
87 #endif /* SQUID_DISKTHREADSDISKFILE_H */