]>
Commit | Line | Data |
---|---|---|
bbc27441 | 1 | /* |
f70aedc4 | 2 | * Copyright (C) 1996-2021 The Squid Software Foundation and contributors |
bbc27441 AJ |
3 | * |
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. | |
7 | */ | |
8 | ||
e2851fe7 AR |
9 | #ifndef SQUID_MMAPPEDFILE_H |
10 | #define SQUID_MMAPPEDFILE_H | |
11 | ||
12 | #include "cbdata.h" | |
13 | #include "DiskIO/DiskFile.h" | |
14 | #include "DiskIO/IORequestor.h" | |
15 | ||
16 | class MmappedFile : public DiskFile | |
17 | { | |
5c2f68b7 | 18 | CBDATA_CLASS(MmappedFile); |
e2851fe7 AR |
19 | |
20 | public: | |
e2851fe7 AR |
21 | MmappedFile(char const *path); |
22 | ~MmappedFile(); | |
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 *); | |
27 | virtual void close(); | |
28 | virtual bool error() const; | |
29 | virtual int getFD() const { return fd;} | |
30 | ||
31 | virtual bool canRead() const; | |
32 | virtual bool canWrite() const; | |
33 | virtual bool ioInProgress() const; | |
34 | ||
35 | private: | |
e2851fe7 AR |
36 | char const *path_; |
37 | RefCount<IORequestor> ioRequestor; | |
38 | //RefCount<ReadRequest> readRequest; | |
39 | //RefCount<WriteRequest> writeRequest; | |
40 | int fd; | |
41 | ||
42 | // mmapped memory leads to SEGV and bus errors if it maps beyond file | |
43 | int64_t minOffset; ///< enforced if not negative (to preserve file headers) | |
44 | int64_t maxOffset; ///< enforced if not negative (to avoid crashes) | |
45 | ||
46 | bool error_; | |
47 | ||
48 | void doClose(); | |
49 | }; | |
50 | ||
51 | #endif /* SQUID_MMAPPEDFILE_H */ | |
f53969cc | 52 |