#include "squid.h"
#include "base/AsyncCbdataCalls.h"
#include "base/Packable.h"
#include "base/Raw.h"
#include "comm.h"
#include "comm/Connection.h"
#include "comm/Read.h"
#include "comm/Write.h"
#include "debug/Messages.h"
#include "fd.h"
#include "fde.h"
#include "format/Quoting.h"
#include "helper.h"
#include "helper/Reply.h"
#include "helper/Request.h"
#include "MemBuf.h"
#include "SquidConfig.h"
#include "SquidIpc.h"
#include "SquidMath.h"
#include "Store.h"
#include "wordlist.h"
#include "mem/Pool.h"

Go to the source code of this file.
Macros | |
#define | HELPER_MAX_ARGS 64 |
#define | MAX_RETRIES 2 |
The maximum allowed request retries. More... | |
Variables | |
static IOCB | helperHandleRead |
static IOCB | helperStatefulHandleRead |
Macro Definition Documentation
◆ HELPER_MAX_ARGS
◆ MAX_RETRIES
Function Documentation
◆ Enqueue()
|
static |
Definition at line 1244 of file helper.cc.
References helper::childs, DBG_CRITICAL, debugs, helperOpenServers(), helper::id_name, helper::last_queue_warn, Helper::ChildConfig::n_active, Helper::ChildConfig::n_max, Helper::ChildConfig::needNew(), helper::queue, helper::_stats::queue_size, Helper::ChildConfig::queue_size, reconfiguring, shutting_down, squid_curtime, and helper::stats.
Referenced by helper::submitRequest().
◆ GetFirstAvailable()
|
static |
Definition at line 1314 of file helper.cc.
References helper::childs, Helper::ChildConfig::concurrency, dlink_node::data, debugs, HelperServerBase::flags, dlink_list::head, HelperServerBase::index, Helper::ChildConfig::n_running, dlink_node::next, HelperServerBase::pending, helper::servers, HelperServerBase::_helper_flags::shutdown, and HelperServerBase::stats.
Referenced by helperKickQueue(), helper::submitRequest(), and helper::willOverload().
◆ helperDispatch()
|
static |
Definition at line 1430 of file helper.cc.
References MemBuf::append(), Packable::appendf(), assert, Helper::Request::buf, cbdataReferenceValid(), commCbCall(), MemBuf::content(), MemBuf::contentSize(), current_time, Helper::Request::data, DBG_IMPORTANT, debugs, Helper::Request::dispatch_time, HelperServerBase::flags, helperDispatchWriteDone(), Helper::Request::Id, HelperServerBase::index, MemBuf::init(), MemBuf::isNull(), helper_server::nextRequestId, helper_server::parent, HelperServerBase::pending, PRIu64, Helper::Xaction::request, HelperServerBase::requests, helper_server::requestsIndex, HelperServerBase::stats, HelperServerBase::uses, helper_server::wqueue, Comm::Write(), helper_server::writebuf, HelperServerBase::writePipe, and HelperServerBase::_helper_flags::writing.
Referenced by helperKickQueue(), and helper::submitRequest().
◆ helperDispatchWriteDone()
|
static |
Definition at line 1404 of file helper.cc.
References MemBuf::clean(), commCbCall(), MemBuf::content(), MemBuf::contentSize(), DBG_CRITICAL, debugs, HelperServerBase::flags, helperDispatchWriteDone(), helper::id_name, HelperServerBase::index, MemBuf::isNull(), Comm::OK, helper_server::parent, helper_server::wqueue, Comm::Write(), helper_server::writebuf, HelperServerBase::writePipe, and HelperServerBase::_helper_flags::writing.
Referenced by helperDispatch(), and helperDispatchWriteDone().
◆ helperHandleRead()
|
static |
Definition at line 1021 of file helper.cc.
References assert, cbdataReferenceValid(), HelperServerBase::closePipesSafely(), comm_read(), commCbCall(), conn, DBG_DATA, DBG_IMPORTANT, debugs, Comm::ERR_CLOSING, Comm::Connection::fd, fd_table, helperHandleRead, helperReturnBuffer(), helper_server::ignoreToEom, HelperServerBase::index, Comm::IsConnOpen(), Comm::OK, helper_server::parent, HelperServerBase::pending, helper_server::popRequest(), HelperServerBase::rbuf, HelperServerBase::rbuf_sz, HelperServerBase::readPipe, helper_server::replyXaction, HelperServerBase::roffset, HelperServerBase::stats, HelperServerBase::timedout, and xisspace.
◆ helperKickQueue()
|
static |
Definition at line 1525 of file helper.cc.
References GetFirstAvailable(), helperDispatch(), and helper::nextRequest().
Referenced by helperOpenServers(), and helperReturnBuffer().
◆ helperOpenServers()
void helperOpenServers | ( | const helper::Pointer & | hlp | ) |
Definition at line 196 of file helper.cc.
References helper::addr, HelperServerBase::addr, assert, asyncCall(), cbdataDialer(), helper::childs, helper::cmdline, comm_add_close_handler(), comm_read(), commCbCall(), commSetConnTimeout(), commSetNonBlocking(), Helper::ChildConfig::concurrency, DBG_IMPORTANT, debugs, dlinkAddTail(), Comm::Connection::fd, FD_DESC_SZ, fd_note(), getCurrentTime(), helper::handleFewerServers(), HELPER_MAX_ARGS, helperHandleRead, helperKickQueue(), helper_server::HelperServerClosed(), HelperServerBase::hIpc, hIpc, helper_server::ignoreToEom, Important, HelperServerBase::initStats(), helper::ipc_type, ipcCreate(), wordlist::key, helper::last_restart, HelperServerBase::link, memAllocBuf(), Helper::ChildConfig::n_active, Helper::ChildConfig::n_max, Helper::ChildConfig::n_running, Helper::ChildConfig::needNew(), wordlist::next, helper_server::nextRequestId, helper_server::parent, HelperServerBase::pid, pid, progname, HelperServerBase::rbuf, HelperServerBase::rbuf_sz, ReadBufSize(), HelperServerBase::readPipe, helper_server::replyXaction, helper_server::requestTimeout(), HelperServerBase::roffset, safe_free, helper::servers, squid_curtime, helper::timeout, helper_server::wqueue, HelperServerBase::writePipe, xmalloc, and xstrdup.
Referenced by Enqueue(), externalAclInit(), helper_server::HelperServerClosed(), Ssl::Helper::Init(), Ssl::CertValidationHelper::Init(), and redirectInit().
◆ helperReturnBuffer()
|
static |
Definition at line 957 of file helper.cc.
References HelperServerBase::answer_time, helper::_stats::avg_svc_time, Helper::BrokenHelper, cbdataReferenceValid(), cbdataReferenceValidDone, helper_server::checkForTimedOutRequests(), helper::childs, HelperServerBase::closePipesSafely(), HelperServerBase::closeWritePipeSafely(), HelperServerBase::_helper_flags::closing, Helper::ChildConfig::concurrency, current_time, DBG_IMPORTANT, debugs, HelperServerBase::dispatch_time, HelperServerBase::flags, helperKickQueue(), helper::id_name, HelperServerBase::index, Math::intAverage(), MAX_RETRIES, helper_server::parent, HelperServerBase::pending, HelperServerBase::rbuf_sz, REDIRECT_AV_FACTOR, helper::_stats::replies, HelperServerBase::replies, helper_server::replyXaction, Helper::Xaction::request, Helper::Request::retries, helper::retryTimedOut, HelperServerBase::_helper_flags::shutdown, helper::stats, HelperServerBase::stats, helper::submitRequest(), helper::timeout, and tvSubMsec().
Referenced by helperHandleRead().
◆ helperShutdown()
void helperShutdown | ( | const helper::Pointer & | hlp | ) |
Definition at line 767 of file helper.cc.
References assert, helper::childs, HelperServerBase::closePipesSafely(), HelperServerBase::_helper_flags::closing, dlink_node::data, debugs, HelperServerBase::flags, dlink_list::head, helper::id_name, HelperServerBase::index, Helper::ChildConfig::n_active, dlink_node::next, HelperServerBase::pending, helper::servers, HelperServerBase::_helper_flags::shutdown, and HelperServerBase::stats.
Referenced by external_acl::~external_acl(), externalAclShutdown(), redirectShutdown(), Ssl::Helper::Shutdown(), and Ssl::CertValidationHelper::Shutdown().
◆ helperStatefulDispatch()
|
static |
Definition at line 1477 of file helper.cc.
References assert, Helper::Request::buf, Helper::Request::callback, cbdataReferenceValid(), commCbCall(), current_time, Helper::Request::data, DBG_IMPORTANT, debugs, HelperServerBase::dispatch_time, helperStatefulDispatchWriteDone(), helperStatefulServerDone(), HelperServerBase::index, helper_stateful_server::parent, HelperServerBase::pending, Helper::Request::placeholder, Helper::Xaction::reply, Helper::Xaction::request, HelperServerBase::requests, helper_stateful_server::reservationId, Helper::Reply::reservationId, Helper::Reply::result, HelperServerBase::stats, Helper::Unknown, HelperServerBase::uses, Comm::Write(), and HelperServerBase::writePipe.
Referenced by helperStatefulKickQueue(), and statefulhelper::submit().
◆ helperStatefulDispatchWriteDone()
|
static |
Definition at line 1473 of file helper.cc.
Referenced by helperStatefulDispatch().
◆ helperStatefulHandleRead()
|
static |
BUG: the below assumes that only one response per read() was received and discards any octets remaining. Doing this prohibits concurrency support with multiple replies per read(). TODO: check that read() setup on these buffers pays attention to roffest!=0 TODO: check that replies bigger than the buffer are discarded and do not to affect future replies
Definition at line 1137 of file helper.cc.
References Helper::Reply::accumulate(), HelperServerBase::answer_time, assert, Helper::Request::callback, cbdataReferenceValid(), HelperServerBase::closePipesSafely(), comm_read(), commCbCall(), conn, current_time, Helper::Request::data, DBG_DATA, DBG_IMPORTANT, debugs, HelperServerBase::dispatch_time, Comm::ERR_CLOSING, Comm::Connection::fd, fd_table, Helper::Reply::finalize(), helperStatefulHandleRead, helperStatefulServerDone(), HelperServerBase::index, Math::intAverage(), Comm::IsConnOpen(), Comm::OK, helper_stateful_server::parent, HelperServerBase::pending, HelperServerBase::rbuf, HelperServerBase::rbuf_sz, HelperServerBase::readPipe, REDIRECT_AV_FACTOR, HelperServerBase::replies, Helper::Xaction::reply, Helper::Xaction::request, HelperServerBase::requests, helper_stateful_server::reservationId, Helper::Reply::reservationId, HelperServerBase::roffset, HelperServerBase::stats, and tvSubMsec().
◆ helperStatefulKickQueue()
|
static |
Definition at line 1535 of file helper.cc.
References debugs, helperStatefulDispatch(), HelperServerBase::index, helper::nextRequest(), statefulhelper::reserveServer(), and StatefulGetFirstAvailable().
Referenced by helperStatefulOpenServers(), and helperStatefulServerDone().
◆ helperStatefulOpenServers()
void helperStatefulOpenServers | ( | const statefulhelper::Pointer & | hlp | ) |
DPW 2007-05-08
helperStatefulOpenServers: create the stateful child helper processes
Definition at line 337 of file helper.cc.
References helper::addr, HelperServerBase::addr, assert, asyncCall(), cbdataDialer(), helper::childs, helper::cmdline, comm_add_close_handler(), comm_read(), commCbCall(), commSetNonBlocking(), Helper::ChildConfig::concurrency, DBG_CRITICAL, DBG_IMPORTANT, debugs, dlinkAddTail(), Comm::Connection::fd, FD_DESC_SZ, fd_note(), getCurrentTime(), helper::handleFewerServers(), HELPER_MAX_ARGS, helper_stateful_server::HelperServerClosed(), helperStatefulHandleRead, helperStatefulKickQueue(), HelperServerBase::hIpc, hIpc, HelperServerBase::initStats(), helper::ipc_type, ipcCreate(), wordlist::key, helper::last_restart, HelperServerBase::link, memAllocBuf(), Helper::ChildConfig::n_active, Helper::ChildConfig::n_max, Helper::ChildConfig::n_running, Helper::ChildConfig::needNew(), wordlist::next, helper_stateful_server::parent, HelperServerBase::pid, pid, progname, HelperServerBase::rbuf, HelperServerBase::rbuf_sz, ReadBufSize(), HelperServerBase::readPipe, helper_stateful_server::reservationStart, HelperServerBase::roffset, safe_free, helper::servers, squid_curtime, HelperServerBase::writePipe, xmalloc, and xstrdup.
Referenced by helper_stateful_server::HelperServerClosed(), and StatefulEnqueue().
◆ helperStatefulServerDone()
|
static |
Definition at line 1547 of file helper.cc.
References HelperServerBase::closeWritePipeSafely(), HelperServerBase::_helper_flags::closing, HelperServerBase::flags, helperStatefulKickQueue(), helper::id_name, helper_stateful_server::parent, HelperServerBase::pending, helper_stateful_server::reserved(), HelperServerBase::_helper_flags::shutdown, and HelperServerBase::stats.
Referenced by statefulhelper::cancelReservation(), helperStatefulDispatch(), and helperStatefulHandleRead().
◆ helperStatefulShutdown()
void helperStatefulShutdown | ( | const statefulhelper::Pointer & | hlp | ) |
Definition at line 804 of file helper.cc.
References assert, helper::childs, HelperServerBase::closePipesSafely(), HelperServerBase::_helper_flags::closing, dlink_node::data, debugs, HelperServerBase::flags, dlink_list::head, helper::id_name, HelperServerBase::index, Helper::ChildConfig::n_active, dlink_node::next, HelperServerBase::pending, helper_stateful_server::reserved(), helper::servers, HelperServerBase::_helper_flags::shutdown, shutting_down, and HelperServerBase::stats.
◆ helperStatefulSubmit()
void helperStatefulSubmit | ( | const statefulhelper::Pointer & | 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.
◆ helperSubmit()
void helperSubmit | ( | const helper::Pointer & | hlp, |
const char * | buf, | ||
HLPCB * | callback, | ||
void * | data | ||
) |
Definition at line 488 of file helper.cc.
References Helper::Request::callback, cbdataReferenceValidDone, Helper::Request::data, Helper::Xaction::reply, Helper::Xaction::request, HelperServerBase::requests, Helper::Reply::result, and Helper::Unknown.
Referenced by constructHelperQuery().
◆ InstanceIdDefinitions()
InstanceIdDefinitions | ( | HelperServerBase | , |
"Hlpr" | |||
) |
◆ ReadBufSize()
const size_t ReadBufSize | ( | 32 * | 1024 | ) |
Referenced by helperOpenServers(), and helperStatefulOpenServers().
◆ StatefulEnqueue()
|
static |
Definition at line 1273 of file helper.cc.
References helper::childs, DBG_CRITICAL, debugs, helperStatefulOpenServers(), helper::id_name, helper::last_queue_warn, Helper::ChildConfig::n_active, Helper::ChildConfig::n_max, Helper::ChildConfig::needNew(), helper::queue, helper::_stats::queue_size, Helper::ChildConfig::queue_size, reconfiguring, shutting_down, squid_curtime, and helper::stats.
Referenced by statefulhelper::submit().
◆ StatefulGetFirstAvailable()
|
static |
Definition at line 1360 of file helper.cc.
References helper::childs, dlink_node::data, debugs, HelperServerBase::flags, dlink_list::head, HelperServerBase::index, Helper::ChildConfig::n_running, dlink_node::next, HelperServerBase::pending, helper_stateful_server::reservationId, helper_stateful_server::reservationStart, Helper::ChildConfig::reservationTimeout, helper_stateful_server::reserved(), helper::servers, HelperServerBase::_helper_flags::shutdown, squid_curtime, and HelperServerBase::stats.
Referenced by helperStatefulKickQueue(), and statefulhelper::submit().
◆ SubmissionFailure()
|
static |
Definition at line 475 of file helper.cc.
References debugs, Helper::Error, and Helper::Unknown.
Variable Documentation
◆ helperHandleRead
|
static |
Definition at line 44 of file helper.cc.
Referenced by helperHandleRead(), and helperOpenServers().
◆ helperStatefulHandleRead
|
static |
Definition at line 45 of file helper.cc.
Referenced by helperStatefulHandleRead(), and helperStatefulOpenServers().