#include <RockHeaderUpdater.h>

Inheritance diagram for Rock::HeaderUpdater:
Collaboration diagram for Rock::HeaderUpdater:

Classes

class  IoCbParams
 

Public Types

typedef CbcPointer< AsyncJobPointer
 

Public Member Functions

 HeaderUpdater (const Rock::SwapDir::Pointer &aStore, const Ipc::StoreMapUpdate &update)
 
 ~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...
 
void handleStopRequest ()
 process external request to terminate now (i.e. during this async call) More...
 
virtual void * toCbdata ()=0
 

Static Public Member Functions

static void Start (const Pointer &job)
 
static void RegisterWithCacheManager ()
 

Public Attributes

const InstanceId< AsyncJobid
 job identifier More...
 

Protected Member Functions

void start () override
 called by AsyncStart; do not call directly More...
 
bool doneAll () const override
 whether positive goal has been reached More...
 
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...
 

Static Protected Member Functions

static void ReportAllJobs (StoreEntry *)
 writes a cache manager report about all jobs existing in this worker 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...
 
bool started_ = false
 Start() has finished successfully. More...
 
bool swanSang_ = false
 swanSong() was called 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)
 
virtual void finalizedInCbdataChild ()=0
 hack: ensure CBDATA_CHILD() after a toCbdata()-defining CBDATA_INTERMEDIATE() More...
 

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...
 
size_t 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

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()

Rock::HeaderUpdater::~HeaderUpdater ( )
overridedefault

Member Function Documentation

◆ callEnd()

void AsyncJob::callEnd ( )
virtualinherited

◆ callException()

◆ callStart()

void AsyncJob::callStart ( AsyncCall call)
inherited

◆ canBeCalled()

bool AsyncJob::canBeCalled ( AsyncCall call) const
inherited

Definition at line 117 of file AsyncJob.cc.

References AsyncCall::cancel(), debugs, and AsyncJob::inCall.

◆ CBDATA_CHILD()

Rock::HeaderUpdater::CBDATA_CHILD ( HeaderUpdater  )
private

◆ deleteThis()

void AsyncJob::deleteThis ( const char *  aReason)
protectedinherited

◆ done()

bool AsyncJob::done ( ) const
protectedinherited

◆ doneAll()

bool Rock::HeaderUpdater::doneAll ( ) const
overrideprotectedvirtual

Reimplemented from AsyncJob.

Definition at line 34 of file RockHeaderUpdater.cc.

References AsyncJob::doneAll().

◆ finalizedInCbdataChild()

virtual void CbdataParent::finalizedInCbdataChild ( )
privatepure virtualinherited

◆ handleStopRequest()

void AsyncJob::handleStopRequest ( )
inlineinherited

Definition at line 73 of file AsyncJob.h.

References AsyncJob::mustStop().

◆ mustStop()

◆ noteDoneReading()

void Rock::HeaderUpdater::noteDoneReading ( int  errflag)
private

Definition at line 152 of file RockHeaderUpdater.cc.

References debugs, and Must.

◆ noteDoneWriting()

void Rock::HeaderUpdater::noteDoneWriting ( int  errflag)
private

◆ noteRead()

void Rock::HeaderUpdater::noteRead ( const IoCbParams  result)
private

◆ parseReadBytes()

void Rock::HeaderUpdater::parseReadBytes ( )
private

Definition at line 268 of file RockHeaderUpdater.cc.

References debugs, headersEnd(), Must, and Store::UnpackSwapMetaSize().

◆ readMore()

void Rock::HeaderUpdater::readMore ( const char *  why)
private

Definition at line 127 of file RockHeaderUpdater.cc.

References debugs, Must, and storeRead().

◆ RegisterWithCacheManager()

void AsyncJob::RegisterWithCacheManager ( )
staticinherited

Definition at line 215 of file AsyncJob.cc.

References Mgr::RegisterAction(), and AsyncJob::ReportAllJobs().

Referenced by mainInitialize().

◆ ReportAllJobs()

void AsyncJob::ReportAllJobs ( StoreEntry e)
staticprotectedinherited

Definition at line 198 of file AsyncJob.cc.

References AllJobs().

Referenced by AsyncJob::RegisterWithCacheManager().

◆ start()

void Rock::HeaderUpdater::start ( )
overrideprotectedvirtual

Reimplemented from AsyncJob.

Definition at line 63 of file RockHeaderUpdater.cc.

References Must.

◆ Start()

◆ startReading()

void Rock::HeaderUpdater::startReading ( )
private

Definition at line 72 of file RockHeaderUpdater.cc.

◆ startWriting()

void Rock::HeaderUpdater::startWriting ( )
private

◆ status()

◆ stopReading()

void Rock::HeaderUpdater::stopReading ( const char *  why)
private

◆ swanSong()

void Rock::HeaderUpdater::swanSong ( )
overrideprotectedvirtual

◆ toCbdata()

virtual void * CbdataParent::toCbdata ( )
pure virtualinherited

Member Data Documentation

◆ bytesRead

uint64_t Rock::HeaderUpdater::bytesRead
private

Definition at line 69 of file RockHeaderUpdater.h.

◆ exchangeBuffer

SBuf Rock::HeaderUpdater::exchangeBuffer
private

Definition at line 68 of file RockHeaderUpdater.h.

◆ id

const InstanceId<AsyncJob> AsyncJob::id
inherited

Definition at line 75 of file AsyncJob.h.

◆ inCall

AsyncCall::Pointer AsyncJob::inCall
protectedinherited

◆ NoteDoneReading

void Rock::HeaderUpdater::NoteDoneReading
staticprivate

Definition at line 48 of file RockHeaderUpdater.h.

◆ NoteDoneWriting

void Rock::HeaderUpdater::NoteDoneWriting
staticprivate

Definition at line 49 of file RockHeaderUpdater.h.

◆ NoteRead

void Rock::HeaderUpdater::NoteRead
staticprivate

Definition at line 47 of file RockHeaderUpdater.h.

◆ reader

StoreIOState::Pointer Rock::HeaderUpdater::reader
private

Definition at line 64 of file RockHeaderUpdater.h.

◆ readerBuffer

SBuf Rock::HeaderUpdater::readerBuffer
private

Definition at line 67 of file RockHeaderUpdater.h.

◆ staleSplicingPointNext

SlotId Rock::HeaderUpdater::staleSplicingPointNext
private

Definition at line 73 of file RockHeaderUpdater.h.

◆ staleSwapHeaderSize

size_t Rock::HeaderUpdater::staleSwapHeaderSize
private

Definition at line 71 of file RockHeaderUpdater.h.

◆ started_

bool AsyncJob::started_ = false
protectedinherited

Definition at line 88 of file AsyncJob.h.

Referenced by AsyncJob::~AsyncJob(), AsyncJob::callEnd(), and AsyncJob::Start().

◆ stopReason

const char* AsyncJob::stopReason
protectedinherited

◆ store

Rock::SwapDir::Pointer Rock::HeaderUpdater::store
private

Definition at line 61 of file RockHeaderUpdater.h.

◆ swanSang_

bool AsyncJob::swanSang_ = false
protectedinherited

Definition at line 89 of file AsyncJob.h.

Referenced by AsyncJob::~AsyncJob(), and AsyncJob::callEnd().

◆ typeName

◆ update

Ipc::StoreMapUpdate Rock::HeaderUpdater::update
private

Definition at line 62 of file RockHeaderUpdater.h.

◆ writer

StoreIOState::Pointer Rock::HeaderUpdater::writer
private

Definition at line 65 of file RockHeaderUpdater.h.


The documentation for this class was generated from the following files:

 

Introduction

Documentation

Support

Miscellaneous

Web Site Translations

Mirrors