]>
git.ipfire.org Git - thirdparty/squid.git/blob - src/fs/ufs/UFSStoreState.h
2 * Copyright (C) 1996-2015 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 #ifndef SQUID_FS_UFS_UFSSTORESTATE_H
10 #define SQUID_FS_UFS_UFSSTORESTATE_H
12 #include "DiskIO/IORequestor.h"
13 #include "SquidList.h"
14 #include "StoreIOState.h"
21 class UFSStoreState
: public StoreIOState
, public IORequestor
23 CBDATA_CLASS(UFSStoreState
);
26 UFSStoreState(SwapDir
* SD
, StoreEntry
* anEntry
, STIOCB
* callback_
, void *callback_data_
);
28 virtual void close(int how
);
29 virtual void closeCompleted();
31 virtual void ioCompletedNotification();
32 virtual void readCompleted(const char *buf
, int len
, int errflag
, RefCount
<ReadRequest
>);
33 virtual void writeCompleted(int errflag
, size_t len
, RefCount
<WriteRequest
>);
34 RefCount
<DiskFile
> theFile
;
40 /* StoreIOState API */
41 void read_(char *buf
, size_t size
, off_t offset
, STRCB
* callback
, void *callback_data
);
42 virtual bool write(char const *buf
, size_t size
, off_t offset
, FREE
* free_func
);
45 virtual void doCloseCallback (int errflag
);
49 MEMPROXY_CLASS(UFSStoreState::_queued_read
);
51 _queued_read() : buf(NULL
), size(0), offset(0), callback(NULL
), callback_data(NULL
) {}
62 MEMPROXY_CLASS(UFSStoreState::_queued_write
);
64 _queued_write() : buf(NULL
), size(0), offset(0), free_func(NULL
) {}
72 /** \todo These should be in the IO strategy */
77 * the write_draining flag is used to avoid recursion inside
78 * the UFSStoreState::drainWriteQueue() method.
83 * The try_closing flag is set by UFSStoreState::tryClosing()
84 * when UFSStoreState wants to close the file, but cannot
85 * because of pending I/Os. If set, UFSStoreState will
86 * try to close again in the I/O callbacks.
90 link_list
*pending_reads
;
91 link_list
*pending_writes
;
92 void queueRead(char *, size_t, off_t
, STRCB
*, void *);
93 void queueWrite(char const *, size_t, off_t
, FREE
*);
95 void drainWriteQueue();
108 #endif /* SQUID_FS_UFS_UFSSTORESTATE_H */