RockHeaderUpdater.h
Go to the documentation of this file.
1/*
2 * Copyright (C) 1996-2023 The Squid Software Foundation and contributors
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
9#ifndef SQUID_FS_ROCK_HEADER_UPDATER_H
10#define SQUID_FS_ROCK_HEADER_UPDATER_H
11
12#include "base/AsyncJob.h"
13#include "cbdata.h"
14#include "fs/rock/forward.h"
15#include "fs/rock/RockSwapDir.h"
16#include "ipc/StoreMap.h"
17
18namespace Rock
19{
20
27{
29
30public:
31 class IoCbParams {
32 public:
33 IoCbParams(const char *aBuf, ssize_t aSize) : buf(aBuf), size(aSize) {}
34 const char *buf;
35 ssize_t size;
36 };
38 ~HeaderUpdater() override = default;
39
40protected:
41 /* AsyncJob API */
42 void start() override;
43 bool doneAll() const override;
44 void swanSong() override;
45
46private:
50
51 void startReading();
52 void stopReading(const char *why);
53 void readMore(const char *why);
54 void noteRead(const IoCbParams result);
55 void noteDoneReading(int errflag);
56 void parseReadBytes();
57
58 void startWriting();
59 void noteDoneWriting(int errflag);
60
63
66
69 uint64_t bytesRead;
70
72
74};
75
76inline
77std::ostream &operator <<(std::ostream &os, const HeaderUpdater::IoCbParams &params)
78{
79 os << static_cast<const void *>(params.buf) << "," << params.size;
80 return os;
81}
82
83} // namespace Rock
84
85#endif /* SQUID_FS_ROCK_HEADER_UPDATER_H */
86
Aggregates information required for updating entry metadata and headers.
Definition: StoreMap.h:182
IoCbParams(const char *aBuf, ssize_t aSize)
HeaderUpdater(const Rock::SwapDir::Pointer &aStore, const Ipc::StoreMapUpdate &update)
void swanSong() override
SBuf readerBuffer
I/O buffer for a single read operation.
StoreIOState::Pointer reader
reads old headers and old data
void stopReading(const char *why)
static StoreIOState::STRCB NoteRead
SlotId staleSplicingPointNext
non-updatable old HTTP body suffix start
void noteDoneReading(int errflag)
SBuf exchangeBuffer
bytes read but not yet discarded or written
uint64_t bytesRead
total entry bytes read from Store so far
bool doneAll() const override
whether positive goal has been reached
void readMore(const char *why)
static StoreIOState::STIOCB NoteDoneReading
static StoreIOState::STIOCB NoteDoneWriting
Rock::SwapDir::Pointer store
cache_dir where the entry is stored
StoreIOState::Pointer writer
writes new headers and old data
CBDATA_CHILD(HeaderUpdater)
void noteRead(const IoCbParams result)
~HeaderUpdater() override=default
size_t staleSwapHeaderSize
stored size of the stale entry metadata
Ipc::StoreMapUpdate update
Ipc::StoreMap update reservation.
void start() override
called by AsyncStart; do not call directly
void noteDoneWriting(int errflag)
Definition: SBuf.h:94
void STRCB(void *their_data, const char *buf, ssize_t len, StoreIOState::Pointer self)
Definition: StoreIOState.h:29
void STIOCB(void *their_data, int errflag, StoreIOState::Pointer self)
Definition: StoreIOState.h:39
Definition: forward.h:28
std::ostream & operator<<(std::ostream &os, const HeaderUpdater::IoCbParams &params)
sfileno SlotId
db cell number, starting with cell 0 (always occupied by the db header)
Definition: forward.h:33

 

Introduction

Documentation

Support

Miscellaneous

Web Site Translations

Mirrors