#include <ServiceRep.h>

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


struct  Client

Public Types

typedef RefCount< ServiceRepPointer
typedef String Id

Public Member Functions

 ServiceRep (const ServiceConfigPointer &aConfig)
virtual ~ServiceRep ()
virtual void finalize ()
virtual bool probed () const
virtual bool up () const
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...
virtual InitiatemakeXactLauncher (Http::Message *virginHeader, HttpRequest *virginCause, AccessLogEntry::Pointer &alp)
void callWhenAvailable (AsyncCall::Pointer &cb, bool priority=false)
void callWhenReady (AsyncCall::Pointer &cb)
bool wantsUrl (const SBuf &urlPath) const
bool wantsPreview (const SBuf &urlPath, size_t &wantedSize) const
bool allows204 () const
bool allows206 () const
Comm::ConnectionPointer getConnection (bool isRetriable, bool &isReused)
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 ()
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...
virtual bool doneAll () const
 whether positive goal has been reached More...
virtual void callException (const std::exception &e)
 called when the job throws during an async call More...
virtual void detach ()
virtual bool detached () const
 whether detached() was called More...
void noteTimeToUpdate ()
void noteTimeToNotify ()
virtual void noteAdaptationAnswer (const Answer &answer)
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...
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...

Public Attributes

Security::ContextPointer sslContext
Security::SessionStatePointer sslSession

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

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< AsyncJobid
 job identifier More...

Private Types

typedef std::vector< ClientClients

Private Member Functions

 CBDATA_CLASS (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
 internal cleanup; do not call directly More...

Private Attributes

Clients theClients
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...
 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 124 of file ServiceRep.h.

◆ Id

typedef String Adaptation::Service::Id

Definition at line 31 of file Service.h.

◆ Pointer

Constructor & Destructor Documentation

◆ ServiceRep()

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

Definition at line 34 of file ServiceRep.cc.

References NULL, setMaxConnections(), and theIdleConns.

◆ ~ServiceRep()

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

Definition at line 50 of file ServiceRep.cc.

References Must, and SWALLOW_EXCEPTIONS.

Member Function Documentation

◆ allows204()

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

Definition at line 346 of file ServiceRep.cc.

References Must.

◆ allows206()

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

Definition at line 352 of file ServiceRep.cc.

References Must.

◆ announceInitiatorAbort()

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

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

Definition at line 523 of file ServiceRep.cc.

References debugs.

◆ availableConnections()

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

The available connections slots to the ICAP server

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

Definition at line 200 of file ServiceRep.cc.

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

◆ availableForNew()

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

Definition at line 307 of file ServiceRep.cc.

References Must.

◆ availableForOld()

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

Definition at line 317 of file ServiceRep.cc.

References Must.

◆ broken()

bool Adaptation::Service::broken ( ) const

Definition at line 30 of file Service.cc.

◆ busyCheckpoint()

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

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

Definition at line 248 of file ServiceRep.cc.

References Adaptation::Icap::ServiceRep::Client::callback, debugs, HERE(), NULL, and ScheduleCallHere.

◆ callEnd()

void AsyncJob::callEnd ( )

◆ callException()

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

Reimplemented from AsyncJob.

Definition at line 568 of file ServiceRep.cc.

References debugs.

◆ callStart()

void AsyncJob::callStart ( AsyncCall call)

◆ 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

Definition at line 101 of file AsyncJob.cc.

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


Adaptation::Icap::ServiceRep::CBDATA_CLASS ( ServiceRep  )

◆ cfg()

◆ changeOptions()

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

Definition at line 455 of file ServiceRep.cc.

References debugs, HERE(), and squid_curtime.

◆ checkOptions()

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

◆ clearAdaptation()

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

◆ deleteThis()

void AsyncJob::deleteThis ( const char *  aReason)

◆ detach()

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

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

Implements Adaptation::Service.

Definition at line 719 of file ServiceRep.cc.

References debugs, and HERE().

◆ detached()

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

Implements Adaptation::Service.

Definition at line 726 of file ServiceRep.cc.

◆ done()

bool AsyncJob::done ( ) const

◆ doneAll()

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

Reimplemented from AsyncJob.

Definition at line 100 of file ServiceRep.h.

References AsyncJob::doneAll().

◆ excessConnections()

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

Definition at line 224 of file ServiceRep.cc.

◆ existWaiters()

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

Definition at line 97 of file ServiceRep.h.

References theAllWaiters.

◆ finalize()

◆ getConnection()

Comm::ConnectionPointer Adaptation::Icap::ServiceRep::getConnection ( bool  isRetriable,
bool &  isReused 

Definition at line 117 of file ServiceRep.cc.

References debugs, HERE(), and Comm::IsConnOpen().

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

◆ handleNewOptions()

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

Definition at line 576 of file ServiceRep.cc.

References debugs, HERE(), and min().

◆ hasOptions()

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

Definition at line 297 of file ServiceRep.cc.

◆ initiateAdaptation()

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

◆ initiated()

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

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 

Implements Adaptation::Service.

Definition at line 672 of file ServiceRep.cc.

◆ mustStop()

◆ needNewOptions()

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

Definition at line 450 of file ServiceRep.cc.

◆ noteAdaptationAclCheckDone()

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

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)

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 538 of file ServiceRep.cc.

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

◆ noteConnectionFailed()

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

Definition at line 179 of file ServiceRep.cc.

References debugs, and HERE().

◆ noteConnectionUse()

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

Definition at line 173 of file ServiceRep.cc.

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

◆ noteFailure()

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

◆ noteGoneWaiter()

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

Definition at line 239 of file ServiceRep.cc.

◆ noteNewWaiter()

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

Definition at line 95 of file ServiceRep.h.

References theAllWaiters.

◆ noteTimeToNotify()

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

◆ noteTimeToUpdate()

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

Definition at line 368 of file ServiceRep.cc.

References debugs, and HERE().

Referenced by ServiceRep_noteTimeToUpdate().

◆ optionsFetchTime()

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

◆ parseMethod()

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

◆ parseVectPoint()

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

◆ probed()

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

Implements Adaptation::Service.

Definition at line 292 of file ServiceRep.cc.

◆ putConnection()

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

◆ scheduleNotification()

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

Definition at line 444 of file ServiceRep.cc.

References CallJobHere, debugs, and HERE().

◆ scheduleUpdate()

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

◆ setMaxConnections()

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

Definition at line 185 of file ServiceRep.cc.

Referenced by ServiceRep().

◆ start()

◆ Start()

◆ startGettingOptions()

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

Definition at line 598 of file ServiceRep.cc.

References debugs, HERE(), and Must.

◆ status()

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

for debugging, starts with space

Reimplemented from AsyncJob.

Definition at line 679 of file ServiceRep.cc.

References buf.

◆ suspend()

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

◆ swanSong()

◆ toCbdata()

virtual void* CbdataParent::toCbdata ( )
pure virtualinherited

◆ up()

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

Implements Adaptation::Service.

Definition at line 302 of file ServiceRep.cc.

◆ wants()

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

◆ wantsPreview()

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

Definition at line 331 of file ServiceRep.cc.

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

◆ wantsUrl()

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

Implements Adaptation::Service.

Definition at line 325 of file ServiceRep.cc.

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

◆ writeableCfg()

ServiceConfig& Adaptation::Service::writeableCfg ( )

Definition at line 62 of file Service.h.

References Adaptation::Service::theConfig.

Member Data Documentation

◆ connOverloadReported

bool Adaptation::Icap::ServiceRep::connOverloadReported

Definition at line 141 of file ServiceRep.h.

◆ id

const InstanceId<AsyncJob> AsyncJob::id

Definition at line 72 of file AsyncJob.h.

◆ inCall

AsyncCall::Pointer AsyncJob::inCall

◆ isDetached

bool Adaptation::Icap::ServiceRep::isDetached

Definition at line 188 of file ServiceRep.h.

◆ isSuspended

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

Definition at line 145 of file ServiceRep.h.

◆ notifying

bool Adaptation::Icap::ServiceRep::notifying

Definition at line 147 of file ServiceRep.h.

◆ sslContext

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

Definition at line 113 of file ServiceRep.h.

◆ sslSession

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

Definition at line 114 of file ServiceRep.h.

◆ stopReason

const char* AsyncJob::stopReason

◆ theAllWaiters

int Adaptation::Icap::ServiceRep::theAllWaiters

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

Definition at line 138 of file ServiceRep.h.

Referenced by existWaiters(), and noteNewWaiter().

◆ theBusyConns

int Adaptation::Icap::ServiceRep::theBusyConns

number of connections given to active transactions

Definition at line 135 of file ServiceRep.h.

◆ theClients

Clients Adaptation::Icap::ServiceRep::theClients

Definition at line 126 of file ServiceRep.h.

◆ theConfig

ServiceConfigPointer Adaptation::Service::theConfig

◆ theIdleConns

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

Definition at line 142 of file ServiceRep.h.

Referenced by ServiceRep().

◆ theLastUpdate

time_t Adaptation::Icap::ServiceRep::theLastUpdate

Definition at line 130 of file ServiceRep.h.

◆ theMaxConnections

int Adaptation::Icap::ServiceRep::theMaxConnections

Definition at line 139 of file ServiceRep.h.

◆ theNotificationWaiters

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

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 134 of file ServiceRep.h.

◆ theOptions

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

Definition at line 128 of file ServiceRep.h.

◆ theOptionsFetcher

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

Definition at line 129 of file ServiceRep.h.

◆ theSessionFailures

FadingCounter Adaptation::Icap::ServiceRep::theSessionFailures

Definition at line 144 of file ServiceRep.h.

◆ typeName

◆ updateScheduled

bool Adaptation::Icap::ServiceRep::updateScheduled

Definition at line 148 of file ServiceRep.h.

◆ wasAnnouncedUp

bool Adaptation::Icap::ServiceRep::wasAnnouncedUp

Definition at line 187 of file ServiceRep.h.

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






Web Site Translations