represents a single "stateless helper" process More...

#include <helper.h>

Inheritance diagram for helper_server:
Collaboration diagram for helper_server:

Public Types

typedef std::map< uint64_t, Requests::iterator > RequestIndex
 
typedef std::list< Helper::Xaction * > Requests
 

Public Member Functions

 ~helper_server () override
 
Helper::XactionpopRequest (int requestId)
 
void checkForTimedOutRequests (bool const retry)
 
bool reserved () override
 whether the server is locked for exclusive use by a client More...
 
void dropQueued () override
 dequeues and sends a Helper::Unknown answer to all queued requests More...
 
helpergetParent () const override
 the helper object that created this server More...
 
void closePipesSafely (const char *name)
 
void closeWritePipeSafely (const char *name)
 
void initStats ()
 
virtual void * toCbdata ()=0
 

Static Public Member Functions

static void requestTimeout (const CommTimeoutCbParams &io)
 Read timeout handler. More...
 
static void HelperServerClosed (helper_server *srv)
 close handler to handle exited server processes More...
 

Public Attributes

uint64_t nextRequestId
 
MemBufwqueue
 
MemBufwritebuf
 
helperparent
 
Helper::XactionreplyXaction
 
bool ignoreToEom
 Whether to ignore current message, because it is timed-out or other reason. More...
 
RequestIndex requestsIndex
 maps request IDs to requests More...
 
const InstanceId< HelperServerBaseindex
 
int pid
 
Ip::Address addr
 
Comm::ConnectionPointer readPipe
 
Comm::ConnectionPointer writePipe
 
void * hIpc
 
char * rbuf
 
size_t rbuf_sz
 
size_t roffset
 
struct timeval dispatch_time
 
struct timeval answer_time
 
dlink_node link
 
struct HelperServerBase::_helper_flags flags
 
Requests requests
 requests in order of submission/expiration More...
 
struct {
   uint64_t   uses
 
   uint64_t   replies
 
   uint64_t   pending
 
   uint64_t   releases
 
   uint64_t   timedout
 
stats
 

Private Member Functions

 CBDATA_CHILD (helper_server)
 
virtual void finalizedInCbdataChild ()=0
 hack: ensure CBDATA_CHILD() after a toCbdata()-defining CBDATA_INTERMEDIATE() More...
 

Detailed Description

Definition at line 244 of file helper.h.

Member Typedef Documentation

◆ RequestIndex

typedef std::map<uint64_t, Requests::iterator> helper_server::RequestIndex

Definition at line 266 of file helper.h.

◆ Requests

typedef std::list<Helper::Xaction *> HelperServerBase::Requests
inherited

Definition at line 226 of file helper.h.

Constructor & Destructor Documentation

◆ ~helper_server()

Member Function Documentation

◆ CBDATA_CHILD()

helper_server::CBDATA_CHILD ( helper_server  )
private

◆ checkForTimedOutRequests()

◆ closePipesSafely()

void HelperServerBase::closePipesSafely ( const char *  name)
inherited

Closes pipes to the helper safely. Handles the case where the read and write pipes are the same FD.

Parameters
namedisplayed for the helper being shutdown if logging an error

Definition at line 74 of file helper.cc.

References Comm::Connection::close(), HelperServerBase::_helper_flags::closing, DBG_IMPORTANT, debugs, Comm::Connection::fd, HelperServerBase::flags, getCurrentTime(), HelperServerBase::hIpc, HelperServerBase::index, HelperServerBase::pid, HelperServerBase::readPipe, and HelperServerBase::writePipe.

Referenced by helperHandleRead(), helperReturnBuffer(), helperShutdown(), helperStatefulHandleRead(), and helperStatefulShutdown().

◆ closeWritePipeSafely()

void HelperServerBase::closeWritePipeSafely ( const char *  name)
inherited

Closes the reading pipe. If the read and write sockets are the same the write pipe will also be closed. Otherwise its left open for later handling.

Parameters
namedisplayed for the helper being shutdown if logging an error

Definition at line 102 of file helper.cc.

References Comm::Connection::close(), HelperServerBase::_helper_flags::closing, DBG_IMPORTANT, debugs, Comm::Connection::fd, HelperServerBase::flags, getCurrentTime(), HelperServerBase::hIpc, HelperServerBase::index, HelperServerBase::pid, HelperServerBase::readPipe, and HelperServerBase::writePipe.

Referenced by ~helper_server(), helper_stateful_server::~helper_stateful_server(), helperReturnBuffer(), and helperStatefulServerDone().

◆ dropQueued()

void helper_server::dropQueued ( )
overridevirtual

Reimplemented from HelperServerBase.

Definition at line 176 of file helper.cc.

References HelperServerBase::dropQueued(), and requestsIndex.

Referenced by HelperServerClosed().

◆ finalizedInCbdataChild()

virtual void CbdataParent::finalizedInCbdataChild ( )
privatepure virtualinherited

◆ getParent()

helper * helper_server::getParent ( ) const
inlineoverridevirtual

Implements HelperServerBase.

Definition at line 283 of file helper.h.

References parent.

Referenced by HelperServerClosed().

◆ HelperServerClosed()

void helper_server::HelperServerClosed ( helper_server srv)
static

◆ initStats()

void HelperServerBase::initStats ( )
inherited

Definition at line 64 of file helper.cc.

References HelperServerBase::stats.

Referenced by helperOpenServers(), and helperStatefulOpenServers().

◆ popRequest()

Helper::Xaction * helper_server::popRequest ( int  requestId)

Search in queue for the request with requestId, return the related Xaction object and remove it from queue. If concurrency is disabled then the requestId is ignored and the Xaction of the next request in queue is retrieved.

Definition at line 893 of file helper.cc.

References helper::childs, Helper::ChildConfig::concurrency, parent, HelperServerBase::requests, and requestsIndex.

Referenced by helperHandleRead().

◆ requestTimeout()

◆ reserved()

bool helper_server::reserved ( )
inlineoverridevirtual

Implements HelperServerBase.

Definition at line 281 of file helper.h.

◆ toCbdata()

virtual void * CbdataParent::toCbdata ( )
pure virtualinherited

Member Data Documentation

◆ addr

Ip::Address HelperServerBase::addr
inherited

Definition at line 206 of file helper.h.

Referenced by helperOpenServers(), and helperStatefulOpenServers().

◆ answer_time

struct timeval HelperServerBase::answer_time
inherited

Definition at line 216 of file helper.h.

Referenced by helperReturnBuffer(), helperStatefulHandleRead(), and helper::packStatsInto().

◆ dispatch_time

struct timeval HelperServerBase::dispatch_time
inherited

◆ flags

◆ hIpc

void* HelperServerBase::hIpc
inherited

◆ ignoreToEom

bool helper_server::ignoreToEom

Definition at line 263 of file helper.h.

Referenced by helperHandleRead(), and helperOpenServers().

◆ index

◆ link

dlink_node HelperServerBase::link
inherited

◆ nextRequestId

uint64_t helper_server::nextRequestId

Definition at line 249 of file helper.h.

Referenced by helperDispatch(), and helperOpenServers().

◆ parent

◆ pending

◆ pid

◆ rbuf

char* HelperServerBase::rbuf
inherited

◆ rbuf_sz

◆ readPipe

◆ releases

uint64_t HelperServerBase::releases
inherited

Definition at line 233 of file helper.h.

◆ replies

uint64_t HelperServerBase::replies
inherited

◆ replyXaction

Helper::Xaction* helper_server::replyXaction

The helper request Xaction object for the current reply . A helper reply may be distributed to more than one of the retrieved packets from helper. This member stores the Xaction object as long as the end-of-message for current reply is not retrieved.

Definition at line 260 of file helper.h.

Referenced by helperHandleRead(), helperOpenServers(), and helperReturnBuffer().

◆ requests

◆ requestsIndex

RequestIndex helper_server::requestsIndex

Definition at line 267 of file helper.h.

Referenced by checkForTimedOutRequests(), dropQueued(), helperDispatch(), and popRequest().

◆ roffset

size_t HelperServerBase::roffset
inherited

◆ 

◆ timedout

uint64_t HelperServerBase::timedout
inherited

Definition at line 234 of file helper.h.

Referenced by helperHandleRead(), and helper::packStatsInto().

◆ uses

uint64_t HelperServerBase::uses
inherited

Definition at line 230 of file helper.h.

Referenced by helperDispatch(), helperStatefulDispatch(), and helper::packStatsInto().

◆ wqueue

MemBuf* helper_server::wqueue

◆ writebuf

MemBuf* helper_server::writebuf

Definition at line 252 of file helper.h.

Referenced by ~helper_server(), helperDispatch(), and helperDispatchWriteDone().

◆ writePipe


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

 

Introduction

Documentation

Support

Miscellaneous

Web Site Translations

Mirrors