#include <ServiceRep.h>

Inheritance diagram for Adaptation::Icap::ServiceRep:
Collaboration diagram for Adaptation::Icap::ServiceRep:

Classes

struct  Client
 

Public Types

typedef RefCount< ServiceRepPointer
 
typedef String Id
 

Public Member Functions

 ServiceRep (const ServiceConfigPointer &aConfig)
 
 ~ServiceRep () override
 
void finalize () override
 
bool probed () const override
 
bool up () const override
 
bool availableForNew () const
 a new transaction may start communicating with the service More...
 
bool availableForOld () const
 a transaction notified about connection slot availability may start communicating with the service More...
 
InitiatemakeXactLauncher (Http::Message *virginHeader, HttpRequest *virginCause, AccessLogEntry::Pointer &alp) override
 
void callWhenAvailable (AsyncCall::Pointer &cb, bool priority=false)
 
void callWhenReady (AsyncCall::Pointer &cb)
 
bool wantsUrl (const SBuf &urlPath) const override
 
bool wantsPreview (const SBuf &urlPath, size_t &wantedSize) const
 
bool allows204 () const
 
bool allows206 () const
 
Comm::ConnectionPointer getIdleConnection (bool isRetriable)
 
void putConnection (const Comm::ConnectionPointer &conn, bool isReusable, bool sendReset, const char *comment)
 
void noteConnectionUse (const Comm::ConnectionPointer &conn)
 
void noteConnectionFailed (const char *comment)
 
void noteFailure () override
 
void noteNewWaiter ()
 New xaction waiting for service to be up or available. More...
 
void noteGoneWaiter ()
 An xaction is not waiting any more for service to be available. More...
 
bool existWaiters () const
 if there are xactions waiting for the service to be available More...
 
bool doneAll () const override
 whether positive goal has been reached More...
 
void callException (const std::exception &e) override
 called when the job throws during an async call More...
 
void detach () override
 
bool detached () const override
 whether detached() was called More...
 
void noteTimeToUpdate ()
 
void noteTimeToNotify ()
 
void noteAdaptationAnswer (const Answer &answer) override
 
virtual bool broken () const
 
bool wants (const ServiceFilter &filter) const
 
const ServiceConfigcfg () const
 
virtual void noteAdaptationAclCheckDone (Adaptation::ServiceGroupPointer group)
 
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...
 
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

Security::ContextPointer sslContext
 
Security::SessionStatePointer sslSession
 
const InstanceId< AsyncJobid
 job identifier More...
 

Protected Member Functions

ServiceConfigwriteableCfg ()
 
CbcPointer< InitiateinitiateAdaptation (Initiate *x)
 < starts freshly created initiate and returns a safe pointer to it More...
 
void clearAdaptation (CbcPointer< Initiate > &x)
 clears the pointer (does not call announceInitiatorAbort) More...
 
void announceInitiatorAbort (CbcPointer< Initiate > &x)
 inform the transaction about abnormal termination and clear the pointer More...
 
bool initiated (const CbcPointer< AsyncJob > &job) const
 Must(initiated(initiate)) instead of Must(initiate.set()), for clarity. More...
 
void deleteThis (const char *aReason)
 
void mustStop (const char *aReason)
 
bool done () const
 the job is destroyed in callEnd() when done() More...
 
virtual void start ()
 called by AsyncStart; do not call directly More...
 
virtual void swanSong ()
 

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 Types

typedef std::vector< ClientClients
 

Private Member Functions

 CBDATA_CHILD (ServiceRep)
 
ICAP::Method parseMethod (const char *) const
 
ICAP::VectPoint parseVectPoint (const char *) const
 
void suspend (const char *reason)
 
bool hasOptions () const
 
bool needNewOptions () const
 
time_t optionsFetchTime () const
 
void scheduleUpdate (time_t when)
 
void scheduleNotification ()
 
void startGettingOptions ()
 
void handleNewOptions (Options *newOptions)
 
void changeOptions (Options *newOptions)
 
void checkOptions ()
 
void announceStatusChange (const char *downPhrase, bool important) const
 
void setMaxConnections ()
 Set the maximum allowed connections for the service. More...
 
int excessConnections () const
 The number of connections which excess the Max-Connections limit. More...
 
int availableConnections () const
 
void busyCheckpoint ()
 
const char * status () const override
 internal cleanup; do not call directly More...
 
virtual void finalizedInCbdataChild ()=0
 hack: ensure CBDATA_CHILD() after a toCbdata()-defining CBDATA_INTERMEDIATE() More...
 

Private Attributes

Clients theClients
 
OptionstheOptions
 
CbcPointer< Adaptation::InitiatetheOptionsFetcher
 
time_t theLastUpdate
 
std::deque< ClienttheNotificationWaiters
 
int theBusyConns
 
int theAllWaiters
 
int theMaxConnections
 the maximum allowed connections to the service More...
 
bool connOverloadReported
 whether we reported exceeding theMaxConnections More...
 
IdleConnListtheIdleConns
 idle persistent connection pool More...
 
FadingCounter theSessionFailures
 
const char * isSuspended
 
bool notifying
 
bool updateScheduled
 
bool wasAnnouncedUp
 
bool isDetached
 
ServiceConfigPointer theConfig
 

Detailed Description

Definition at line 59 of file ServiceRep.h.

Member Typedef Documentation

◆ Clients

Definition at line 125 of file ServiceRep.h.

◆ Id

typedef String Adaptation::Service::Id
inherited

Definition at line 31 of file Service.h.

◆ Pointer

Constructor & Destructor Documentation

◆ ServiceRep()

Adaptation::Icap::ServiceRep::ServiceRep ( const ServiceConfigPointer aConfig)
explicit

Definition at line 33 of file ServiceRep.cc.

References setMaxConnections(), and theIdleConns.

◆ ~ServiceRep()

Adaptation::Icap::ServiceRep::~ServiceRep ( )
override

Definition at line 49 of file ServiceRep.cc.

References Must, and SWALLOW_EXCEPTIONS.

Member Function Documentation

◆ allows204()

bool Adaptation::Icap::ServiceRep::allows204 ( ) const

Definition at line 344 of file ServiceRep.cc.

References Must.

◆ allows206()

bool Adaptation::Icap::ServiceRep::allows206 ( ) const

Definition at line 350 of file ServiceRep.cc.

References Must.

◆ announceInitiatorAbort()

void Adaptation::Initiator::announceInitiatorAbort ( CbcPointer< Initiate > &  x)
protectedinherited

Definition at line 38 of file Initiator.cc.

References CallJobHere.

Referenced by ClientHttpRequest::~ClientHttpRequest(), and Client::cleanAdaptation().

◆ announceStatusChange()

void Adaptation::Icap::ServiceRep::announceStatusChange ( const char *  downPhrase,
bool  important 
) const
private

Definition at line 521 of file ServiceRep.cc.

References debugs.

◆ availableConnections()

int Adaptation::Icap::ServiceRep::availableConnections ( ) const
private

The available connections slots to the ICAP server

Returns
the available slots, or -1 if there is no limit on allowed connections

Definition at line 198 of file ServiceRep.cc.

References DBG_IMPORTANT, debugs, max(), and Adaptation::srvForce.

◆ availableForNew()

bool Adaptation::Icap::ServiceRep::availableForNew ( ) const

Definition at line 305 of file ServiceRep.cc.

References Must.

◆ availableForOld()

bool Adaptation::Icap::ServiceRep::availableForOld ( ) const

Definition at line 315 of file ServiceRep.cc.

References Must.

◆ broken()

bool Adaptation::Service::broken ( ) const
virtualinherited

Definition at line 30 of file Service.cc.

◆ busyCheckpoint()

void Adaptation::Icap::ServiceRep::busyCheckpoint ( )
private

If there are xactions waiting for the service to be available, notify as many xactions as the available connections slots.

Definition at line 246 of file ServiceRep.cc.

References Adaptation::Icap::ServiceRep::Client::callback, debugs, and ScheduleCallHere.

◆ callEnd()

void AsyncJob::callEnd ( )
virtualinherited

◆ callException()

void Adaptation::Icap::ServiceRep::callException ( const std::exception &  e)
overridevirtual

Reimplemented from AsyncJob.

Definition at line 566 of file ServiceRep.cc.

References debugs.

◆ callStart()

void AsyncJob::callStart ( AsyncCall call)
inherited

◆ callWhenAvailable()

void Adaptation::Icap::ServiceRep::callWhenAvailable ( AsyncCall::Pointer cb,
bool  priority = false 
)

◆ callWhenReady()

void Adaptation::Icap::ServiceRep::callWhenReady ( AsyncCall::Pointer cb)

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

Adaptation::Icap::ServiceRep::CBDATA_CHILD ( ServiceRep  )
private

◆ cfg()

◆ changeOptions()

void Adaptation::Icap::ServiceRep::changeOptions ( Options newOptions)
private

Definition at line 453 of file ServiceRep.cc.

References debugs, and squid_curtime.

◆ checkOptions()

void Adaptation::Icap::ServiceRep::checkOptions ( )
private

◆ clearAdaptation()

void Adaptation::Initiator::clearAdaptation ( CbcPointer< Initiate > &  x)
protectedinherited

◆ deleteThis()

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

◆ detach()

void Adaptation::Icap::ServiceRep::detach ( )
overridevirtual

called when removed from the config; the service will be auto-destroyed when the last refcounting user leaves

Implements Adaptation::Service.

Definition at line 717 of file ServiceRep.cc.

References debugs.

◆ detached()

bool Adaptation::Icap::ServiceRep::detached ( ) const
overridevirtual

Implements Adaptation::Service.

Definition at line 724 of file ServiceRep.cc.

◆ done()

bool AsyncJob::done ( ) const
protectedinherited

◆ doneAll()

bool Adaptation::Icap::ServiceRep::doneAll ( ) const
inlineoverridevirtual

Reimplemented from AsyncJob.

Definition at line 101 of file ServiceRep.h.

References AsyncJob::doneAll().

◆ excessConnections()

int Adaptation::Icap::ServiceRep::excessConnections ( ) const
private

Definition at line 222 of file ServiceRep.cc.

◆ existWaiters()

bool Adaptation::Icap::ServiceRep::existWaiters ( ) const
inline

Definition at line 98 of file ServiceRep.h.

References theAllWaiters.

◆ finalize()

void Adaptation::Icap::ServiceRep::finalize ( )
overridevirtual

◆ finalizedInCbdataChild()

virtual void CbdataParent::finalizedInCbdataChild ( )
privatepure virtualinherited

◆ getIdleConnection()

Comm::ConnectionPointer Adaptation::Icap::ServiceRep::getIdleConnection ( bool  isRetriable)
Returns
an idle persistent ICAP connection or nil

Definition at line 117 of file ServiceRep.cc.

References debugs.

Referenced by Adaptation::Icap::Xaction::openConnection().

◆ handleNewOptions()

void Adaptation::Icap::ServiceRep::handleNewOptions ( Options newOptions)
private

Definition at line 574 of file ServiceRep.cc.

References debugs, and min().

◆ handleStopRequest()

void AsyncJob::handleStopRequest ( )
inlineinherited

Definition at line 73 of file AsyncJob.h.

References AsyncJob::mustStop().

◆ hasOptions()

bool Adaptation::Icap::ServiceRep::hasOptions ( ) const
private

Definition at line 295 of file ServiceRep.cc.

◆ initiateAdaptation()

CbcPointer< Adaptation::Initiate > Adaptation::Initiator::initiateAdaptation ( Initiate x)
protectedinherited

◆ initiated()

bool Adaptation::Initiator::initiated ( const CbcPointer< AsyncJob > &  job) const
inlineprotectedinherited

Definition at line 52 of file Initiator.h.

References CbcPointer< Cbc >::set().

Referenced by ClientHttpRequest::startAdaptation(), and Client::startAdaptation().

◆ makeXactLauncher()

Adaptation::Initiate * Adaptation::Icap::ServiceRep::makeXactLauncher ( Http::Message virginHeader,
HttpRequest virginCause,
AccessLogEntry::Pointer alp 
)
overridevirtual

Implements Adaptation::Service.

Definition at line 670 of file ServiceRep.cc.

◆ mustStop()

◆ needNewOptions()

bool Adaptation::Icap::ServiceRep::needNewOptions ( ) const
private

Definition at line 448 of file ServiceRep.cc.

◆ noteAdaptationAclCheckDone()

void Adaptation::Initiator::noteAdaptationAclCheckDone ( Adaptation::ServiceGroupPointer  group)
virtualinherited

AccessCheck calls this back with a possibly nil service group to signal whether adaptation is needed and where it should start.

Reimplemented in Client, and ClientHttpRequest.

Definition at line 17 of file Initiator.cc.

References Must.

◆ noteAdaptationAnswer()

void Adaptation::Icap::ServiceRep::noteAdaptationAnswer ( const Answer answer)
overridevirtual

called with the initial adaptation decision (adapt, block, error); virgin and/or adapted body transmission may continue after this

Implements Adaptation::Initiator.

Definition at line 536 of file ServiceRep.cc.

References Adaptation::Answer::akError, Adaptation::Answer::akForward, Adaptation::Icap::Options::configure(), DBG_IMPORTANT, debugs, RefCount< C >::getRaw(), Adaptation::Answer::kind, Adaptation::Answer::message, and Must.

◆ noteConnectionFailed()

void Adaptation::Icap::ServiceRep::noteConnectionFailed ( const char *  comment)

Definition at line 177 of file ServiceRep.cc.

References debugs.

◆ noteConnectionUse()

void Adaptation::Icap::ServiceRep::noteConnectionUse ( const Comm::ConnectionPointer conn)

Definition at line 171 of file ServiceRep.cc.

References conn, fd_table, Comm::IsConnOpen(), and Must.

◆ noteFailure()

void Adaptation::Icap::ServiceRep::noteFailure ( )
overridevirtual

◆ noteGoneWaiter()

void Adaptation::Icap::ServiceRep::noteGoneWaiter ( )

Definition at line 237 of file ServiceRep.cc.

◆ noteNewWaiter()

void Adaptation::Icap::ServiceRep::noteNewWaiter ( )
inline

Definition at line 96 of file ServiceRep.h.

References theAllWaiters.

◆ noteTimeToNotify()

void Adaptation::Icap::ServiceRep::noteTimeToNotify ( )

◆ noteTimeToUpdate()

void Adaptation::Icap::ServiceRep::noteTimeToUpdate ( )

Definition at line 366 of file ServiceRep.cc.

References debugs.

Referenced by ServiceRep_noteTimeToUpdate().

◆ optionsFetchTime()

time_t Adaptation::Icap::ServiceRep::optionsFetchTime ( ) const
private

◆ parseMethod()

ICAP::Method Adaptation::Icap::ServiceRep::parseMethod ( const char *  ) const
private

◆ parseVectPoint()

ICAP::VectPoint Adaptation::Icap::ServiceRep::parseVectPoint ( const char *  ) const
private

◆ probed()

bool Adaptation::Icap::ServiceRep::probed ( ) const
overridevirtual

Implements Adaptation::Service.

Definition at line 290 of file ServiceRep.cc.

◆ putConnection()

void Adaptation::Icap::ServiceRep::putConnection ( const Comm::ConnectionPointer conn,
bool  isReusable,
bool  sendReset,
const char *  comment 
)

Definition at line 146 of file ServiceRep.cc.

References comm_reset_close(), conn, debugs, Comm::IsConnOpen(), and Must.

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

◆ scheduleNotification()

void Adaptation::Icap::ServiceRep::scheduleNotification ( )
private

Definition at line 442 of file ServiceRep.cc.

References CallJobHere, and debugs.

◆ scheduleUpdate()

void Adaptation::Icap::ServiceRep::scheduleUpdate ( time_t  when)
private

◆ setMaxConnections()

void Adaptation::Icap::ServiceRep::setMaxConnections ( )
private

Definition at line 183 of file ServiceRep.cc.

References Config, and SquidConfig::workers.

Referenced by ServiceRep().

◆ start()

◆ Start()

◆ startGettingOptions()

void Adaptation::Icap::ServiceRep::startGettingOptions ( )
private

Definition at line 596 of file ServiceRep.cc.

References debugs, and Must.

◆ status()

const char * Adaptation::Icap::ServiceRep::status ( ) const
overrideprivatevirtual

for debugging, starts with space

Reimplemented from AsyncJob.

Definition at line 677 of file ServiceRep.cc.

References MemBuf::append(), Packable::appendf(), MemBuf::content(), MemBuf::reset(), and MemBuf::terminate().

◆ suspend()

void Adaptation::Icap::ServiceRep::suspend ( const char *  reason)
private

◆ swanSong()

◆ toCbdata()

virtual void * CbdataParent::toCbdata ( )
pure virtualinherited

◆ up()

bool Adaptation::Icap::ServiceRep::up ( ) const
overridevirtual

Implements Adaptation::Service.

Definition at line 300 of file ServiceRep.cc.

◆ wants()

bool Adaptation::Service::wants ( const ServiceFilter filter) const
inherited

◆ wantsPreview()

bool Adaptation::Icap::ServiceRep::wantsPreview ( const SBuf urlPath,
size_t wantedSize 
) const

Definition at line 329 of file ServiceRep.cc.

References Must, and Adaptation::Icap::Options::xferPreview.

◆ wantsUrl()

bool Adaptation::Icap::ServiceRep::wantsUrl ( const SBuf urlPath) const
overridevirtual

Implements Adaptation::Service.

Definition at line 323 of file ServiceRep.cc.

References Must, and Adaptation::Icap::Options::xferIgnore.

◆ writeableCfg()

ServiceConfig & Adaptation::Service::writeableCfg ( )
inlineprotectedinherited

Definition at line 62 of file Service.h.

References Adaptation::Service::theConfig.

Member Data Documentation

◆ connOverloadReported

bool Adaptation::Icap::ServiceRep::connOverloadReported
mutableprivate

Definition at line 142 of file ServiceRep.h.

◆ id

const InstanceId<AsyncJob> AsyncJob::id
inherited

Definition at line 75 of file AsyncJob.h.

◆ inCall

AsyncCall::Pointer AsyncJob::inCall
protectedinherited

◆ isDetached

bool Adaptation::Icap::ServiceRep::isDetached
private

Definition at line 189 of file ServiceRep.h.

◆ isSuspended

const char* Adaptation::Icap::ServiceRep::isSuspended
private

Definition at line 146 of file ServiceRep.h.

◆ notifying

bool Adaptation::Icap::ServiceRep::notifying
private

Definition at line 148 of file ServiceRep.h.

◆ sslContext

Security::ContextPointer Adaptation::Icap::ServiceRep::sslContext

Definition at line 114 of file ServiceRep.h.

◆ sslSession

Security::SessionStatePointer Adaptation::Icap::ServiceRep::sslSession

Definition at line 115 of file ServiceRep.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

◆ swanSang_

bool AsyncJob::swanSang_ = false
protectedinherited

Definition at line 89 of file AsyncJob.h.

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

◆ theAllWaiters

int Adaptation::Icap::ServiceRep::theAllWaiters
private

number of xactions waiting for a connection slot (notified and not) the number is decreased after the xaction receives notification

Definition at line 139 of file ServiceRep.h.

Referenced by existWaiters(), and noteNewWaiter().

◆ theBusyConns

int Adaptation::Icap::ServiceRep::theBusyConns
private

number of connections given to active transactions

Definition at line 136 of file ServiceRep.h.

◆ theClients

Clients Adaptation::Icap::ServiceRep::theClients
private

Definition at line 127 of file ServiceRep.h.

◆ theConfig

ServiceConfigPointer Adaptation::Service::theConfig
privateinherited

◆ theIdleConns

IdleConnList* Adaptation::Icap::ServiceRep::theIdleConns
private

Definition at line 143 of file ServiceRep.h.

Referenced by ServiceRep().

◆ theLastUpdate

time_t Adaptation::Icap::ServiceRep::theLastUpdate
private

Definition at line 131 of file ServiceRep.h.

◆ theMaxConnections

int Adaptation::Icap::ServiceRep::theMaxConnections
private

Definition at line 140 of file ServiceRep.h.

◆ theNotificationWaiters

std::deque<Client> Adaptation::Icap::ServiceRep::theNotificationWaiters
private

FIFO queue of xactions waiting for a connection slot and not yet notified about it; xaction is removed when notification is scheduled

Definition at line 135 of file ServiceRep.h.

◆ theOptions

Options* Adaptation::Icap::ServiceRep::theOptions
private

Definition at line 129 of file ServiceRep.h.

◆ theOptionsFetcher

CbcPointer<Adaptation::Initiate> Adaptation::Icap::ServiceRep::theOptionsFetcher
private

Definition at line 130 of file ServiceRep.h.

◆ theSessionFailures

FadingCounter Adaptation::Icap::ServiceRep::theSessionFailures
private

Definition at line 145 of file ServiceRep.h.

◆ typeName

◆ updateScheduled

bool Adaptation::Icap::ServiceRep::updateScheduled
private

Definition at line 149 of file ServiceRep.h.

◆ wasAnnouncedUp

bool Adaptation::Icap::ServiceRep::wasAnnouncedUp
mutableprivate

Definition at line 188 of file ServiceRep.h.


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

 

Introduction

Documentation

Support

Miscellaneous

Web Site Translations

Mirrors