#include <RockHeaderUpdater.h>


Classes | |
class | IoCbParams |
Public Types | |
typedef CbcPointer< AsyncJob > | Pointer |
Public Member Functions | |
HeaderUpdater (const Rock::SwapDir::Pointer &aStore, const Ipc::StoreMapUpdate &update) | |
virtual | ~HeaderUpdater () override=default |
bool | canBeCalled (AsyncCall &call) const |
whether we can be called More... | |
void | callStart (AsyncCall &call) |
virtual void | callEnd () |
called right after the called job method More... | |
virtual void | callException (const std::exception &e) |
called when the job throws during an async call More... | |
virtual void * | toCbdata ()=0 |
Static Public Member Functions | |
static Pointer | Start (AsyncJob *job) |
starts a freshly created job (i.e., makes the job asynchronous) More... | |
Protected Member Functions | |
virtual void | start () override |
called by AsyncStart; do not call directly More... | |
virtual bool | doneAll () const override |
whether positive goal has been reached More... | |
virtual void | swanSong () override |
void | deleteThis (const char *aReason) |
void | mustStop (const char *aReason) |
bool | done () const |
the job is destroyed in callEnd() when done() More... | |
virtual const char * | status () const |
internal cleanup; do not call directly More... | |
Protected Attributes | |
const char * | stopReason |
reason for forcing done() to be true More... | |
const char * | typeName |
kid (leaf) class name, for debugging More... | |
AsyncCall::Pointer | inCall |
the asynchronous call being handled, if any More... | |
const InstanceId< AsyncJob > | id |
job identifier More... | |
Private Member Functions | |
CBDATA_CHILD (HeaderUpdater) | |
void | startReading () |
void | stopReading (const char *why) |
void | readMore (const char *why) |
void | noteRead (const IoCbParams result) |
void | noteDoneReading (int errflag) |
void | parseReadBytes () |
void | startWriting () |
void | noteDoneWriting (int errflag) |
Private Attributes | |
Rock::SwapDir::Pointer | store |
cache_dir where the entry is stored More... | |
Ipc::StoreMapUpdate | update |
Ipc::StoreMap update reservation. More... | |
StoreIOState::Pointer | reader |
reads old headers and old data More... | |
StoreIOState::Pointer | writer |
writes new headers and old data More... | |
SBuf | readerBuffer |
I/O buffer for a single read operation. More... | |
SBuf | exchangeBuffer |
bytes read but not yet discarded or written More... | |
uint64_t | bytesRead |
total entry bytes read from Store so far More... | |
int | staleSwapHeaderSize |
stored size of the stale entry metadata More... | |
SlotId | staleSplicingPointNext |
non-updatable old HTTP body suffix start More... | |
Static Private Attributes | |
static StoreIOState::STRCB | NoteRead |
static StoreIOState::STIOCB | NoteDoneReading |
static StoreIOState::STIOCB | NoteDoneWriting |
Detailed Description
Updates HTTP headers of a single Rock store entry:
- reads old body data in the same slot as the last old headers slot, if any
- writes new headers (1+ slots)
- writes old data (0-2 slots)
- chains the new entry prefix (1+ slots) to the old entry suffix (0+ slots)
Definition at line 26 of file RockHeaderUpdater.h.
Member Typedef Documentation
◆ Pointer
|
inherited |
Definition at line 34 of file AsyncJob.h.
Constructor & Destructor Documentation
◆ HeaderUpdater()
Rock::HeaderUpdater::HeaderUpdater | ( | const Rock::SwapDir::Pointer & | aStore, |
const Ipc::StoreMapUpdate & | update | ||
) |
Definition at line 20 of file RockHeaderUpdater.cc.
◆ ~HeaderUpdater()
|
overridevirtualdefault |
Member Function Documentation
◆ callEnd()
|
virtualinherited |
called right after the called job method
Reimplemented in Adaptation::Icap::Xaction.
Definition at line 136 of file AsyncJob.cc.
References AsyncCall::debugLevel, debugs, AsyncCall::debugSection, AsyncJob::done(), HERE(), AsyncJob::inCall, NULL, AsyncJob::status(), AsyncJob::swanSong(), and AsyncJob::typeName.
Referenced by Adaptation::Icap::Xaction::callEnd(), and AsyncJob::deleteThis().
◆ callException()
|
virtualinherited |
Reimplemented in ClientHttpRequest, Ftp::Server, Ipc::Inquirer, Ipc::Forwarder, Adaptation::Icap::Xaction, Adaptation::Icap::ServiceRep, Adaptation::Icap::ModXact, and ConnStateData.
Definition at line 127 of file AsyncJob.cc.
References cbdataReferenceValid(), debugs, Must, AsyncJob::mustStop(), and CbdataParent::toCbdata().
Referenced by ConnStateData::callException(), Adaptation::Icap::Xaction::callException(), Ipc::Forwarder::callException(), Ipc::Inquirer::callException(), and Ftp::Server::callException().
◆ callStart()
|
inherited |
called just before the called method
Definition at line 114 of file AsyncJob.cc.
References cbdataReferenceValid(), AsyncCall::debugLevel, debugs, AsyncCall::debugSection, AsyncJob::inCall, Must, AsyncJob::status(), CbdataParent::toCbdata(), and AsyncJob::typeName.
◆ canBeCalled()
|
inherited |
Definition at line 101 of file AsyncJob.cc.
References AsyncCall::cancel(), debugs, HERE(), AsyncJob::inCall, and NULL.
◆ CBDATA_CHILD()
|
private |
◆ deleteThis()
|
protectedinherited |
Definition at line 49 of file AsyncJob.cc.
References asyncCall(), AsyncJob::callEnd(), debugs, AsyncJob::inCall, JobMemFun(), Must, NULL, AsyncJob::stopReason, and AsyncJob::typeName.
Referenced by ConnStateData::connStateClosed().
◆ done()
|
protectedinherited |
Definition at line 90 of file AsyncJob.cc.
References AsyncJob::doneAll(), NULL, and AsyncJob::stopReason.
Referenced by AsyncJob::callEnd(), HappyConnOpener::checkForNewConnection(), and Downloader::downloadFinished().
◆ doneAll()
|
overrideprotectedvirtual |
Reimplemented from AsyncJob.
Definition at line 34 of file RockHeaderUpdater.cc.
References AsyncJob::doneAll().
◆ mustStop()
|
protectedinherited |
Definition at line 69 of file AsyncJob.cc.
References debugs, AsyncJob::inCall, Must, NULL, AsyncJob::stopReason, and AsyncJob::typeName.
Referenced by HttpStateData::abortAll(), AsyncJob::callException(), HttpStateData::continueAfterParsingHeader(), HttpStateData::drop1xx(), HttpStateData::handleMoreRequestBodyAvailable(), HttpStateData::httpStateConnClosed(), HttpStateData::httpTimeout(), Comm::ConnOpener::noteAbort(), HttpStateData::proceedAfter1xx(), ConnStateData::proxyProtocolError(), HttpStateData::readReply(), HttpStateData::start(), and HttpStateData::wroteLast().
◆ noteDoneReading()
|
private |
Definition at line 153 of file RockHeaderUpdater.cc.
◆ noteDoneWriting()
|
private |
Definition at line 252 of file RockHeaderUpdater.cc.
References debugs, Must, Rock::IoState::splicingPoint, and Rock::IoState::writeableAnchor_.
◆ noteRead()
|
private |
Definition at line 111 of file RockHeaderUpdater.cc.
References Rock::HeaderUpdater::IoCbParams::buf, debugs, Must, and Rock::HeaderUpdater::IoCbParams::size.
◆ parseReadBytes()
|
private |
Definition at line 270 of file RockHeaderUpdater.cc.
References StoreMetaUnpacker::checkBuffer(), debugs, headersEnd(), and Must.
◆ readMore()
|
private |
Definition at line 128 of file RockHeaderUpdater.cc.
References debugs, Must, and storeRead().
◆ start()
|
overrideprotectedvirtual |
◆ Start()
|
staticinherited |
Definition at line 23 of file AsyncJob.cc.
References CallJobHere, and AsyncJob::start().
Referenced by Ftp::Server::AcceptCtrlConnection(), Ftp::Server::checkDataConnPre(), clientListenerConnectionOpened(), Ftp::Client::connectDataChannel(), FwdState::connectStart(), Adaptation::Icap::Xaction::dnsLookupDone(), Log::TcpLogger::doConnect(), FwdState::establishTunnelThruProxy(), TunnelStateData::establishTunnelThruProxy(), Ipc::Coordinator::handleCacheMgrRequest(), PeerPoolMgr::handleOpenedConnection(), Ipc::Coordinator::handleSnmpRequest(), httpAccept(), httpsAccept(), httpStart(), idnsInitVC(), Ftp::Gateway::listenForDataChannel(), Ftp::Server::listenForDataConnection(), Adaptation::Icap::Xaction::noteCommConnected(), Log::TcpLogger::Open(), HappyConnOpener::openFreshConnection(), PeerPoolMgr::openNewConnection(), peerProbeConnect(), Mgr::FunAction::respond(), Mgr::InfoAction::respond(), FwdState::secureConnectionToPeer(), TunnelStateData::secureConnectionToPeer(), Ipc::SendMessage(), Mgr::Inquirer::sendResponse(), snmpConstructReponse(), SquidMain(), CacheManager::start(), Ident::Start(), Adaptation::AccessCheck::Start(), Rock::Rebuild::Start(), Security::PeerConnector::startCertDownloading(), TunnelStateData::startConnecting(), Ftp::StartGateway(), Ftp::StartRelay(), PeerPoolMgrsRr::syncConfig(), and Rock::SwapDir::updateHeaders().
◆ startReading()
|
private |
Definition at line 72 of file RockHeaderUpdater.cc.
◆ startWriting()
|
private |
Definition at line 167 of file RockHeaderUpdater.cc.
References debugs, Must, Rock::IoState::staleSplicingPointNext, StoreIOState::wroteAll, and xfree.
◆ status()
|
protectedvirtualinherited |
for debugging, starts with space
Reimplemented in HappyConnOpener, Security::PeerConnector, Ipc::Inquirer, Comm::TcpAcceptor, Http::Tunneler, Adaptation::Initiate, Adaptation::Icap::Xaction, Adaptation::Icap::ServiceRep, and Adaptation::Ecap::XactionRep.
Definition at line 159 of file AsyncJob.cc.
References buf, NULL, and AsyncJob::stopReason.
Referenced by AsyncJob::callEnd(), AsyncJob::callStart(), Adaptation::Initiate::status(), and Comm::TcpAcceptor::status().
◆ stopReading()
|
private |
Definition at line 83 of file RockHeaderUpdater.cc.
References debugs, Must, StoreIOState::readerDone, Rock::IoState::splicingPoint, and Rock::IoState::staleSplicingPointNext.
◆ swanSong()
|
overrideprotectedvirtual |
Reimplemented from AsyncJob.
Definition at line 40 of file RockHeaderUpdater.cc.
References StoreIOState::readerDone, AsyncJob::swanSong(), Rock::IoState::writeableAnchor_, and StoreIOState::writerGone.
◆ toCbdata()
|
pure virtualinherited |
Implemented in HttpStateData, ClientHttpRequest, and BodySink.
Referenced by AsyncJob::callException(), and AsyncJob::callStart().
Member Data Documentation
◆ bytesRead
|
private |
Definition at line 69 of file RockHeaderUpdater.h.
◆ exchangeBuffer
|
private |
Definition at line 68 of file RockHeaderUpdater.h.
◆ id
|
protectedinherited |
Definition at line 72 of file AsyncJob.h.
◆ inCall
|
protectedinherited |
Definition at line 71 of file AsyncJob.h.
Referenced by AsyncJob::callEnd(), AsyncJob::callStart(), AsyncJob::canBeCalled(), AsyncJob::deleteThis(), and AsyncJob::mustStop().
◆ NoteDoneReading
|
staticprivate |
Definition at line 48 of file RockHeaderUpdater.h.
◆ NoteDoneWriting
|
staticprivate |
Definition at line 49 of file RockHeaderUpdater.h.
◆ NoteRead
|
staticprivate |
Definition at line 47 of file RockHeaderUpdater.h.
◆ reader
|
private |
Definition at line 64 of file RockHeaderUpdater.h.
◆ readerBuffer
|
private |
Definition at line 67 of file RockHeaderUpdater.h.
◆ staleSplicingPointNext
|
private |
Definition at line 73 of file RockHeaderUpdater.h.
◆ staleSwapHeaderSize
|
private |
Definition at line 71 of file RockHeaderUpdater.h.
◆ stopReason
|
protectedinherited |
Definition at line 69 of file AsyncJob.h.
Referenced by AsyncJob::deleteThis(), AsyncJob::done(), AsyncJob::mustStop(), AsyncJob::status(), and HappyConnOpener::status().
◆ store
|
private |
Definition at line 61 of file RockHeaderUpdater.h.
◆ typeName
|
protectedinherited |
Definition at line 70 of file AsyncJob.h.
Referenced by AsyncJob::AsyncJob(), Adaptation::Icap::Xaction::Xaction(), AsyncJob::~AsyncJob(), AsyncJob::callEnd(), AsyncJob::callStart(), AsyncJob::deleteThis(), and AsyncJob::mustStop().
◆ update
|
private |
Definition at line 62 of file RockHeaderUpdater.h.
◆ writer
|
private |
Definition at line 65 of file RockHeaderUpdater.h.
The documentation for this class was generated from the following files:
- src/fs/rock/RockHeaderUpdater.h
- src/fs/rock/RockHeaderUpdater.cc