#include <MemObject.h>

Collaboration diagram for MemObject:

Classes

struct  abort_
 
class  MemCache
 State of an entry with regards to the [shared] memory caching. More...
 
class  SwapOut
 
class  XitTable
 State of an entry with regards to the [shared] in-transit table. More...
 

Public Types

using Io = Store::IoStatus
 

Public Member Functions

void * operator new (size_t byteCount)
 
void operator delete (void *address)
 
void dump () const
 
 MemObject ()
 
 ~MemObject ()
 
void setUris (char const *aStoreId, char const *aLogUri, const HttpRequestMethod &aMethod)
 
bool hasUris () const
 whether setUris() has been called More...
 
void write (const StoreIOBuffer &buf)
 
void unlinkRequest ()
 
const HttpReplyPointergetReply () const
 
void replaceReply (const HttpReplyPointer &r)
 
void stat (MemBuf *mb) const
 
int64_t endOffset () const
 
void markEndOfReplyHeaders ()
 
int64_t expectedReplySize () const
 
int64_t size () const
 
void reset ()
 
int64_t lowestMemReaderOffset () const
 
bool readAheadPolicyCanRead () const
 
void addClient (store_client *)
 
int64_t objectBytesOnDisk () const
 
int64_t policyLowestOffsetToKeep (bool swap) const
 
int64_t availableForSwapOut () const
 buffered bytes we have not swapped out yet More...
 
void trimSwappable ()
 
void trimUnSwappable ()
 
bool isContiguous () const
 
int mostBytesWanted (int max, bool ignoreDelayPools) const
 
void setNoDelay (bool const newValue)
 
DelayId mostBytesAllowed () const
 
const char * urlXXX () const
 
const char * storeId () const
 
const char * logUri () const
 client request URI used for logging; storeId() by default More...
 
size_t clientCount () const
 
bool clientIsFirst (void *sc) const
 
void delayRead (DeferredRead const &)
 
void kickReads ()
 

Static Public Member Functions

static int UseCount ()
 
static size_t inUseCount ()
 

Public Attributes

HttpRequestMethod method
 
mem_hdr data_hdr
 
int64_t inmem_lo = 0
 
dlink_list clients
 
int nclients = 0
 
SwapOut swapout
 
XitTable xitTable
 current [shared] memory caching state for the entry More...
 
MemCache memCache
 current [shared] memory caching state for the entry More...
 
HttpRequestPointer request
 
struct timeval start_ping
 
IRCBping_reply_callback
 
PeerSelectorircb_data = nullptr
 
struct MemObject::abort_ abort
 
RemovalPolicyNode repl
 
int id = 0
 
int64_t object_sz = -1
 
size_t swap_hdr_sz = 0
 
SBuf vary_headers
 

Static Public Attributes

static constexpr Io ioUndecided = Store::ioUndecided
 
static constexpr Io ioReading = Store::ioReading
 
static constexpr Io ioWriting = Store::ioWriting
 
static constexpr Io ioDone = Store::ioDone
 

Static Private Member Functions

static Mem::AllocatorProxyPool ()
 

Private Attributes

HttpReplyPointer reply_
 
String storeId_
 StoreId for our entry (usually request URI) More...
 
String logUri_
 URI used for logging (usually request URI) More...
 
DeferredReadManager deferredReads
 

Detailed Description

Definition at line 33 of file MemObject.h.

Member Typedef Documentation

◆ Io

Definition at line 127 of file MemObject.h.

Constructor & Destructor Documentation

◆ MemObject()

MemObject::MemObject ( )

Definition at line 98 of file MemObject.cc.

References debugs, ping_reply_callback, reply_, and start_ping.

◆ ~MemObject()

Member Function Documentation

◆ addClient()

void MemObject::addClient ( store_client aClient)

Definition at line 295 of file MemObject.cc.

References assert, clients, dlinkAdd(), nclients, store_client::node, and urlXXX().

Referenced by replaceReply(), and storeClientListAdd().

◆ availableForSwapOut()

int64_t MemObject::availableForSwapOut ( ) const

◆ clientCount()

size_t MemObject::clientCount ( ) const
inline

Definition at line 107 of file MemObject.h.

References nclients.

Referenced by storeUnregister().

◆ clientIsFirst()

bool MemObject::clientIsFirst ( void *  sc) const
inline

Definition at line 109 of file MemObject.h.

References dlink_node::data, and dlink_list::head.

◆ delayRead()

void MemObject::delayRead ( DeferredRead const &  aRead)

◆ dump()

void MemObject::dump ( ) const

◆ endOffset()

◆ expectedReplySize()

int64_t MemObject::expectedReplySize ( ) const

negative if unknown; otherwise, expected object_sz, expected endOffset maximum, and stored reply headers+body size (all three are the same)

Definition at line 242 of file MemObject.cc.

References HttpReply::bodySize(), debugs, Http::Message::hdr_sz, method, object_sz, and reply_.

Referenced by Store::Controller::keepForLocalMemoryCache(), StoreEntry::mayStartSwapOut(), objectSizeForDirSelection(), replaceReply(), MemStore::shouldCache(), MemStore::startCaching(), and storeSwapMetaBuild().

◆ getReply()

◆ hasUris()

bool MemObject::hasUris ( ) const

◆ inUseCount()

size_t MemObject::inUseCount ( )
static

Definition at line 48 of file MemObject.cc.

References Mem::AllocatorProxy::inUseCount(), and Pool().

Referenced by Store::Controller::getStats().

◆ isContiguous()

bool MemObject::isContiguous ( ) const

◆ kickReads()

void MemObject::kickReads ( )

Definition at line 442 of file MemObject.cc.

References deferredReads, and DeferredReadManager::kickReads().

Referenced by store_client::copy(), and storeUnregister().

◆ logUri()

const char * MemObject::logUri ( ) const

Definition at line 65 of file MemObject.cc.

References logUri_, String::size(), storeId(), and String::termedBuf().

Referenced by StoreEntry::adjustVary(), stat(), storeLog(), and urlXXX().

◆ lowestMemReaderOffset()

int64_t MemObject::lowestMemReaderOffset ( ) const

◆ markEndOfReplyHeaders()

void MemObject::markEndOfReplyHeaders ( )

sets reply_->hdr_sz to endOffset()

Definition at line 224 of file MemObject.cc.

References assert, endOffset(), Http::Message::hdr_sz, and reply_.

Referenced by replaceReply(), and StoreEntry::startWriting().

◆ mostBytesAllowed()

◆ mostBytesWanted()

int MemObject::mostBytesWanted ( int  max,
bool  ignoreDelayPools 
) const

Definition at line 401 of file MemObject.cc.

References DelayId::bytesWanted(), max(), and mostBytesAllowed().

Referenced by replaceReply().

◆ objectBytesOnDisk()

int64_t MemObject::objectBytesOnDisk ( ) const

◆ operator delete()

void MemObject::operator delete ( void *  address)
inline

Definition at line 35 of file MemObject.h.

◆ operator new()

void* MemObject::operator new ( size_t  byteCount)
inline

Definition at line 35 of file MemObject.h.

◆ policyLowestOffsetToKeep()

int64_t MemObject::policyLowestOffsetToKeep ( bool  swap) const

◆ Pool()

static Mem::AllocatorProxy& MemObject::Pool ( )
inlinestaticprivate

Definition at line 35 of file MemObject.h.

Referenced by inUseCount().

◆ readAheadPolicyCanRead()

bool MemObject::readAheadPolicyCanRead ( ) const

◆ replaceReply()

◆ reset()

void MemObject::reset ( )

◆ setNoDelay()

void MemObject::setNoDelay ( bool const  newValue)

Definition at line 415 of file MemObject.cc.

References clients, store_client::delayId, dlink_list::head, node::next, sc, and DelayId::setNoDelay().

Referenced by replaceReply().

◆ setUris()

void MemObject::setUris ( char const *  aStoreId,
char const *  aLogUri,
const HttpRequestMethod aMethod 
)

Sets store ID, log URI, and request method (unless already set). Does not clobber the method so that, say, a HEAD hit for a GET entry keeps the GET method that matches the entry key. Same for the other parts of the trio because the entry filling code may expect them to be constant. XXX: Avoid this method. We plan to remove it and make the trio constant after addressing the XXX in MemStore::get().

Definition at line 77 of file MemObject.cc.

References String::clean(), debugs, hasUris(), logUri_, method, storeId_, and urlXXX().

Referenced by StoreEntry::ensureMemObject().

◆ size()

int64_t MemObject::size ( ) const

Definition at line 233 of file MemObject.cc.

References endOffset(), and object_sz.

Referenced by peerDigestFetchSetStats(), and replaceReply().

◆ stat()

◆ storeId()

const char * MemObject::storeId ( ) const

Entry StoreID (usually just Request URI); if a buggy code requests this before the information is available, returns an "[unknown_URI]" string.

Definition at line 54 of file MemObject.cc.

References DBG_IMPORTANT, debugs, dump(), String::size(), storeId_, and String::termedBuf().

Referenced by StoreEntry::adjustVary(), clientReplyContext::cacheHit(), StoreEntry::calcPublicKey(), findPreviouslyCachedEntry(), HeapKeyGen_StoreEntry_GDSF(), HeapKeyGen_StoreEntry_LFUDA(), HeapKeyGen_StoreEntry_LRU(), httpMaybeRemovePublic(), logUri(), refreshCheck(), StoreEntry::url(), and urlXXX().

◆ trimSwappable()

void MemObject::trimSwappable ( )

◆ trimUnSwappable()

void MemObject::trimUnSwappable ( )

◆ unlinkRequest()

void MemObject::unlinkRequest ( )
inline

Definition at line 56 of file MemObject.h.

References request.

Referenced by Store::Controller::handleIdleEntry(), and storeDigestRewriteFinish().

◆ urlXXX()

const char* MemObject::urlXXX ( ) const
inline

Before StoreID, code assumed that MemObject stores Request URI. After StoreID, some old code still incorrectly assumes that. Use this method to mark that incorrect assumption.

Definition at line 93 of file MemObject.h.

References logUri(), and storeId().

Referenced by addClient(), StoreMetaURL::checkConsistency(), HttpStateData::haveParsedReplyHeaders(), HttpStateData::processReplyHeader(), setUris(), varyEvaluateMatch(), and ~MemObject().

◆ UseCount()

static int MemObject::UseCount ( )
inlinestatic

Definition at line 35 of file MemObject.h.

◆ write()

void MemObject::write ( const StoreIOBuffer buf)

Member Data Documentation

◆ abort

◆ clients

◆ data_hdr

◆ deferredReads

DeferredReadManager MemObject::deferredReads
private

Definition at line 185 of file MemObject.h.

Referenced by delayRead(), and kickReads().

◆ id

int MemObject::id = 0

Definition at line 167 of file MemObject.h.

Referenced by peerCountMcastPeersStart(), and StoreEntry::setPrivateKey().

◆ inmem_lo

◆ ioDone

constexpr Io MemObject::ioDone = Store::ioDone
static

◆ ioReading

constexpr Io MemObject::ioReading = Store::ioReading
static

Definition at line 129 of file MemObject.h.

Referenced by MemStore::anchorEntry(), MemStore::disconnect(), and MemStore::write().

◆ ioUndecided

constexpr Io MemObject::ioUndecided = Store::ioUndecided
static

Definition at line 128 of file MemObject.h.

Referenced by MemStore::write().

◆ ioWriting

constexpr Io MemObject::ioWriting = Store::ioWriting
static

Definition at line 130 of file MemObject.h.

Referenced by MemStore::disconnect(), MemStore::startCaching(), and MemStore::write().

◆ ircb_data

PeerSelector* MemObject::ircb_data = nullptr

◆ logUri_

String MemObject::logUri_
mutableprivate

Definition at line 183 of file MemObject.h.

Referenced by dump(), logUri(), and setUris().

◆ memCache

◆ method

◆ nclients

int MemObject::nclients = 0

◆ object_sz

◆ ping_reply_callback

IRCB* MemObject::ping_reply_callback

◆ repl

◆ reply_

HttpReplyPointer MemObject::reply_
private

◆ request

◆ start_ping

struct timeval MemObject::start_ping

◆ storeId_

String MemObject::storeId_
mutableprivate

Definition at line 182 of file MemObject.h.

Referenced by dump(), hasUris(), setUris(), and storeId().

◆ swap_hdr_sz

◆ swapout

◆ vary_headers

◆ xitTable


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

 

Introduction

Documentation

Support

Miscellaneous

Web Site Translations

Mirrors