]>
git.ipfire.org Git - thirdparty/squid.git/blob - src/DiskIO/Blocking/BlockingFile.h
2 * Copyright (C) 1996-2022 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 47 Store Directory Routines */
11 #ifndef SQUID_BLOCKINGFILE_H
12 #define SQUID_BLOCKINGFILE_H
15 #include "DiskIO/DiskFile.h"
16 #include "DiskIO/IORequestor.h"
17 #include "typedefs.h" //DRCB, DWCB
19 class BlockingFile
: public DiskFile
21 CBDATA_CLASS(BlockingFile
);
24 BlockingFile(char const *path
);
25 ~BlockingFile() override
;
26 void open(int flags
, mode_t mode
, RefCount
<IORequestor
> callback
) override
;
27 void create(int flags
, mode_t mode
, RefCount
<IORequestor
> callback
) override
;
28 void read(ReadRequest
*) override
;
29 void write(WriteRequest
*) override
;
30 void close() override
;
31 bool error() const override
;
32 int getFD() const override
{ return fd
;}
34 bool canRead() const override
;
35 bool ioInProgress() const override
;
39 static DWCB WriteDone
;
42 void error (bool const &);
45 RefCount
<IORequestor
> ioRequestor
;
46 RefCount
<ReadRequest
> readRequest
;
47 RefCount
<WriteRequest
> writeRequest
;
49 void readDone(int fd
, const char *buf
, int len
, int errflag
);
50 void writeDone(int fd
, int errflag
, size_t len
);
53 #endif /* SQUID_BLOCKINGFILE_H */