]> git.ipfire.org Git - thirdparty/squid.git/blame - src/DiskIO/Mmapped/MmappedFile.h
Source Format Enforcement (#532)
[thirdparty/squid.git] / src / DiskIO / Mmapped / MmappedFile.h
CommitLineData
bbc27441 1/*
77b1029d 2 * Copyright (C) 1996-2020 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
16class MmappedFile : public DiskFile
17{
5c2f68b7 18 CBDATA_CLASS(MmappedFile);
e2851fe7
AR
19
20public:
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
35private:
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