#include <helper.h>

Inheritance diagram for statefulhelper:
Collaboration diagram for statefulhelper:

Public Types

typedef std::unordered_map< Helper::ReservationId, helper_stateful_server * > Reservations

Public Member Functions

void * operator new (size_t size)
void operator delete (void *address)
void * toCbdata () noexcept
 statefulhelper (const char *name)
 ~statefulhelper ()
void reserveServer (helper_stateful_server *srv)
 reserve the given server More...
void cancelReservation (const Helper::ReservationId reservation)
 undo reserveServer(), clear the reservation and kick the queue More...
Helper::XactionnextRequest ()
bool trySubmit (const char *buf, HLPCB *callback, void *data)
 If possible, submit request. Otherwise, either kill Squid or return false. More...
void submitRequest (Helper::Xaction *r)
void packStatsInto (Packable *p, const char *label=nullptr) const
 Dump some stats about the helper state to a Packable object. More...
bool willOverload () const
void handleKilledServer (HelperServerBase *srv, bool &needsNewServers)

Public Attributes

dlink_list servers
std::queue< Helper::Xaction * > queue
const char * id_name
Helper::ChildConfig childs
 Configuration settings for number running. More...
int ipc_type
Ip::Address addr
unsigned int droppedRequests
 requests not sent during helper overload More...
time_t overloadStart
 when the helper became overloaded (zero if it is not) More...
time_t last_queue_warn
time_t last_restart
time_t timeout
 Requests timeout. More...
bool retryTimedOut
 Whether the timed-out requests must retried. More...
bool retryBrokenHelper
 Whether the requests must retried on BH replies. More...
SBuf onTimedOutResponse
 The response to use when helper response timedout. More...
char eom
 The char which marks the end of (response) message, normally '
'. More...
struct helper::_stats stats

Protected Member Functions

bool queueFull () const
 whether queuing an additional request would overload the helper More...
bool overloaded () const
void syncQueueStats ()
 synchronizes queue-dependent measurements with the current queue state More...
bool prepSubmit ()
void submit (const char *buf, HLPCB *callback, void *data)
 dispatches or enqueues a helper requests; does not enforce queue limits More...

Private Member Functions

helper_stateful_serverfindServer (const Helper::ReservationId &reservation)
void submit (const char *buf, HLPCB *callback, void *data, const Helper::ReservationId &reservation)
bool trySubmit (const char *buf, HLPCB *callback, void *data, const Helper::ReservationId &reservation)
 reserved servers indexed by reservation IDs More...

Private Attributes

Reservations reservations

Static Private Attributes

static cbdata_type CBDATA_statefulhelper = CBDATA_UNKNOWN
static cbdata_type CBDATA_helper = CBDATA_UNKNOWN


void helperStatefulSubmit (statefulhelper *hlp, const char *buf, HLPCB *callback, void *data, const Helper::ReservationId &reservation)

Detailed Description

Definition at line 141 of file helper.h.

Member Typedef Documentation

◆ Reservations

Definition at line 146 of file helper.h.

Constructor & Destructor Documentation

◆ statefulhelper()

statefulhelper::statefulhelper ( const char *  name)

Definition at line 148 of file helper.h.

◆ ~statefulhelper()

statefulhelper::~statefulhelper ( )

Definition at line 149 of file helper.h.

Member Function Documentation

◆ cancelReservation()

◆ findServer()

helper_stateful_server * statefulhelper::findServer ( const Helper::ReservationId reservation)
the previously reserved server (if the reservation is still valid) or nil

Definition at line 614 of file helper.cc.

References reservations.

Referenced by submit().

◆ handleKilledServer()

void helper::handleKilledServer ( HelperServerBase srv,
bool &  needsNewServers 

◆ nextRequest()

Helper::Xaction * helper::nextRequest ( )
next request in the queue, or nil.

Definition at line 1261 of file helper.cc.

References helper::queue, helper::_stats::queue_size, and helper::stats.

Referenced by helperKickQueue(), and helperStatefulKickQueue().

◆ operator delete()

void statefulhelper::operator delete ( void *  address)

Definition at line 143 of file helper.h.

◆ operator new()

void * statefulhelper::operator new ( size_t  size)

Definition at line 143 of file helper.h.

◆ overloaded()

bool helper::overloaded ( ) const

◆ packStatsInto()

◆ prepSubmit()

bool helper::prepSubmit ( )

prepares the helper for request submission returns true if and only if the submission should proceed may kill Squid if the helper remains overloaded for too long

Definition at line 519 of file helper.cc.

References Helper::ChildConfig::actDie, helper::childs, DBG_IMPORTANT, debugs, helper::droppedRequests, fatalf(), helper::id_name, Helper::ChildConfig::onPersistentOverload, helper::overloaded(), helper::overloadStart, squid_curtime, and helper::syncQueueStats().

Referenced by helper::trySubmit(), and trySubmit().

◆ queueFull()

bool helper::queueFull ( ) const

◆ reserveServer()

◆ submit() [1/2]

void helper::submit ( const char *  buf,
HLPCB callback,
void *  data 

Definition at line 557 of file helper.cc.

References DBG_DATA, debugs, and helper::submitRequest().

Referenced by helper::trySubmit().

◆ submit() [2/2]

◆ submitRequest()

void helper::submitRequest ( Helper::Xaction r)

Submits a request to the helper or add it to the queue if none of the servers is available.

Definition at line 446 of file helper.cc.

References Enqueue(), GetFirstAvailable(), helperDispatch(), and helper::syncQueueStats().

Referenced by helper_server::checkForTimedOutRequests(), helperReturnBuffer(), and helper::submit().

◆ syncQueueStats()

void helper::syncQueueStats ( )

◆ toCbdata()

void * statefulhelper::toCbdata ( )

Definition at line 143 of file helper.h.

◆ trySubmit() [1/2]

bool helper::trySubmit ( const char *  buf,
HLPCB callback,
void *  data 

Definition at line 546 of file helper.cc.

References helper::prepSubmit(), and helper::submit().

Referenced by ExternalACLLookup::Start().

◆ trySubmit() [2/2]

bool statefulhelper::trySubmit ( const char *  buf,
HLPCB callback,
void *  data,
const Helper::ReservationId reservation 

If possible, submit request. Otherwise, either kill Squid or return false.

Definition at line 575 of file helper.cc.

References helper::prepSubmit(), and submit().

◆ willOverload()

bool helper::willOverload ( ) const

whether the helper will be in "overloaded" state after one more request already overloaded helpers return true

Definition at line 735 of file helper.cc.

References helper::childs, GetFirstAvailable(), Helper::ChildConfig::needNew(), and helper::queueFull().

Referenced by aclMatchExternal(), redirectStart(), and storeIdStart().

Friends And Related Function Documentation

◆ helperStatefulSubmit

void helperStatefulSubmit ( statefulhelper hlp,
const char *  buf,
HLPCB callback,
void *  data,
const Helper::ReservationId reservation 

Submit request or callback the caller with a Helper::Error error. If the reservation is not set then reserves a new helper.

Definition at line 567 of file helper.cc.

Member Data Documentation

◆ addr

Ip::Address helper::addr

Definition at line 113 of file helper.h.

Referenced by helperOpenServers(), and helperStatefulOpenServers().

◆ CBDATA_helper

cbdata_type helper::CBDATA_helper = CBDATA_UNKNOWN

Definition at line 65 of file helper.h.

◆ CBDATA_statefulhelper

cbdata_type statefulhelper::CBDATA_statefulhelper = CBDATA_UNKNOWN

Definition at line 143 of file helper.h.

◆ childs

◆ cmdline

wordlist* helper::cmdline

◆ droppedRequests

unsigned int helper::droppedRequests

Definition at line 114 of file helper.h.

Referenced by helper::prepSubmit(), and helper::syncQueueStats().

◆ eom

char helper::eom

Definition at line 122 of file helper.h.

Referenced by helperHandleRead(), helperStatefulHandleRead(), and Ssl::Helper::Init().

◆ id_name

◆ ipc_type

int helper::ipc_type

◆ last_queue_warn

time_t helper::last_queue_warn

Definition at line 116 of file helper.h.

Referenced by Enqueue(), and StatefulEnqueue().

◆ last_restart

time_t helper::last_restart

◆ onTimedOutResponse

SBuf helper::onTimedOutResponse

Definition at line 121 of file helper.h.

Referenced by helper_server::checkForTimedOutRequests(), and redirectInit().

◆ overloadStart

time_t helper::overloadStart

Definition at line 115 of file helper.h.

Referenced by helper::prepSubmit(), and helper::syncQueueStats().

◆ queue

std::queue<Helper::Xaction *> helper::queue

Definition at line 109 of file helper.h.

Referenced by helper::~helper(), Enqueue(), helper::nextRequest(), and StatefulEnqueue().

◆ reservations

Reservations statefulhelper::reservations

Definition at line 168 of file helper.h.

Referenced by cancelReservation(), findServer(), and reserveServer().

◆ retryBrokenHelper

bool helper::retryBrokenHelper

Definition at line 120 of file helper.h.

Referenced by redirectInit().

◆ retryTimedOut

bool helper::retryTimedOut

Definition at line 119 of file helper.h.

Referenced by helperReturnBuffer(), redirectInit(), and helper_server::requestTimeout().

◆ servers

◆ stats

◆ timeout

time_t helper::timeout

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






Web Site Translations