]> git.ipfire.org Git - thirdparty/squid.git/blame - src/DiskIO/AIO/AIODiskIOStrategy.h
SourceFormat Enforcement
[thirdparty/squid.git] / src / DiskIO / AIO / AIODiskIOStrategy.h
CommitLineData
59b2d47f 1/*
bde978a6 2 * Copyright (C) 1996-2015 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_AIODISKIOSTRATEGY_H
10#define SQUID_AIODISKIOSTRATEGY_H
59b2d47f 11
2513178d
AJ
12#if USE_DISKIO_AIO
13
b9ae18aa 14#include "async_io.h"
602d9612 15#include "DiskIO/DiskIOStrategy.h"
59b2d47f 16
b9ae18aa 17class AIODiskIOStrategy : public DiskIOStrategy
59b2d47f 18{
19
20public:
b9ae18aa 21 AIODiskIOStrategy();
22 virtual ~AIODiskIOStrategy();
59b2d47f 23
b9ae18aa 24 virtual bool shedLoad();
25 /* What is the current load? 999 = 99.9% */
26 virtual int load();
27 /* Return a handle for performing IO operations */
28 virtual RefCount<DiskFile> newFile (char const *path);
29 /* flush all IO operations */
30 virtual void sync();
c521ad17
DK
31 /** whether the IO Strategy can use unlinkd */
32 virtual bool unlinkdUseful() const;
b9ae18aa 33 /* unlink a file by path */
34 virtual void unlinkFile (char const *);
35
36 /* perform any pending callbacks */
37 virtual int callback();
59b2d47f 38
b9ae18aa 39 /* Init per-instance logic */
40 virtual void init();
41
42 /* cachemgr output on the IO instance stats */
43 virtual void statfs(StoreEntry & sentry)const;
44 /* module specific options */
45 virtual ConfigOption *getOptionTree() const;
46 /* a file descriptor */
47 int fd;
48 /* queue of requests */
49 async_queue_t aq;
50
51 int findSlot();
52};
59b2d47f 53
2513178d 54#endif /* USE_DISKIO_AIO */
b9ae18aa 55#endif /* SQUID_AIODISKIOSTRATEGY_H */
f53969cc 56