Namespaces | |
namespace | Mem |
Classes | |
class | BaseMultiQueue |
class | Coordinator |
Coordinates shared activities of Strands (Squid processes or threads) More... | |
class | FewToFewBiQueue |
class | Forwarder |
class | Inquirer |
class | MemMap |
A map of MemMapSlots indexed by their keys, with read/write slot locking. More... | |
class | MemMapCleaner |
API for adjusting external state when dirty map slot is being freed. More... | |
class | MemMapSlot |
a MemMap basic element, holding basic shareable memory block info More... | |
class | MultiQueue |
class | OneToOneUniQueue |
class | OneToOneUniQueues |
shared array of OneToOneUniQueues More... | |
class | OpenListenerParams |
"shared listen" is when concurrent processes are listening on the same fd More... | |
class | Port |
Waits for and receives incoming IPC messages; kids handle the messages. More... | |
class | QuestionerId |
class | QueueReader |
class | QueueReaders |
shared array of QueueReaders More... | |
class | ReadWriteLock |
class | ReadWriteLockStats |
approximate stats of a set of ReadWriteLocks More... | |
class | Request |
IPC request. More... | |
class | RequestId |
class | Response |
A response to Ipc::Request. More... | |
class | SharedListenRequest |
a request for a listen socket with given parameters More... | |
class | SharedListenResponse |
a response to SharedListenRequest More... | |
class | StartListeningAnswer |
StartListening() result. More... | |
class | StoreMap |
class | StoreMapAnchor |
class | StoreMapAnchors |
class | StoreMapCleaner |
API for adjusting external state when dirty map slice is being freed. More... | |
class | StoreMapItems |
class | StoreMapSlice |
class | StoreMapUpdate |
Aggregates information required for updating entry metadata and headers. More... | |
class | Strand |
Receives coordination messages on behalf of its process or thread. More... | |
class | StrandCoord |
Strand location details. More... | |
class | StrandMessage |
an IPC message carrying StrandCoord More... | |
class | StrandSearchRequest |
asynchronous strand search request More... | |
class | TypedMsgHdr |
struct msghdr with a known type, fixed-size I/O and control buffers More... | |
class | UdsOp |
class | UdsSender |
attempts to send an IPC message a few times, with a timeout More... | |
Typedefs | |
using | InquirerPointer = CbcPointer< Inquirer > |
maps request->id to the Inquirer waiting for the response to that request More... | |
using | WaitingInquiriesItem = std::pair< const RequestId::Index, InquirerPointer > |
using | WaitingInquiries = std::unordered_map< RequestId::Index, InquirerPointer, std::hash< RequestId::Index >, std::equal_to< RequestId::Index >, PoolingAllocator< WaitingInquiriesItem > > |
using | StartListeningCallback = AsyncCallback< StartListeningAnswer > |
typedef int32_t | StoreMapSliceId |
typedef StoreMapItems< StoreMapSlice > | StoreMapSlices |
StoreMapSlices indexed by their slice ID. More... | |
typedef StoreMapItems< std::atomic< sfileno > > | StoreMapFileNos |
StoreMapAnchor positions, indexed by entry "name" (i.e., the entry key hash) More... | |
typedef std::vector< StrandCoord > | StrandCoords |
a collection of strand coordinates; the order, if any, is owner-dependent More... | |
Enumerations | |
enum | FdNoteId { fdnNone , fdnHttpSocket , fdnHttpsSocket , fdnFtpSocket , fdnInSnmpSocket , fdnOutSnmpSocket , fdnInIcpSocket , fdnInHtcpSocket , fdnEnd } |
We cannot send char* FD notes to other processes. Pass int IDs and convert. More... | |
enum | MessageType { mtNone = 0 , mtRegisterStrand , mtStrandRegistered , mtFindStrand , mtStrandReady , mtSharedListenRequest , mtSharedListenResponse , mtIpcIoNotification , mtCollapsedForwardingNotification , mtCacheMgrRequest , mtCacheMgrResponse , mtSnmpRequest , mtSnmpResponse , mtEnd } |
message class identifier More... | |
Functions | |
const char * | FdNote (int fdNodeId) |
converts FdNoteId into a string More... | |
static InquirerPointer | DequeueRequest (const RequestId::Index requestId) |
returns and forgets the Inquirer waiting for the given requests More... | |
QuestionerId | MyQuestionerId () |
the questioner ID of the current/calling process More... | |
template<class Answer > | |
const Answer & | Mine (const Answer &answer) |
std::ostream & | operator<< (std::ostream &os, const QuestionerId &qid) |
std::ostream & | operator<< (std::ostream &, const ReadWriteLock &) |
dumps approximate lock state (for debugging) More... | |
void | AssertFlagIsSet (std::atomic_flag &flag) |
std::ostream & | operator<< (std::ostream &, const RequestId &) |
void | JoinSharedListen (const OpenListenerParams &, StartListeningCallback &) |
prepare and send SharedListenRequest to Coordinator More... | |
void | SharedListenJoined (const SharedListenResponse &response) |
process Coordinator response to SharedListenRequest More... | |
void | StartListening (int sock_type, int proto, const Comm::ConnectionPointer &listenConn, FdNoteId, StartListeningCallback &) |
std::ostream & | operator<< (std::ostream &, const StartListeningAnswer &) |
struct sockaddr_un | PathToAddress (const String &pathAddr) |
converts human-readable filename path into UDS address More... | |
void | SendMessage (const String &toAddress, const TypedMsgHdr &message) |
const Comm::ConnectionPointer & | ImportFdIntoComm (const Comm::ConnectionPointer &conn, int socktype, int protocol, FdNoteId noteId) |
import socket fd from another strand into our Comm state More... | |
Variables | |
static WaitingInquiries | TheWaitingInquirers |
pending Inquirer requests for this process More... | |
const char | strandAddrLabel [] = "-kid" |
strand's listening address unique label More... | |
Detailed Description
Declarations used by various IPC messages
Typedef Documentation
◆ InquirerPointer
using Ipc::InquirerPointer = typedef CbcPointer<Inquirer> |
Definition at line 29 of file Inquirer.cc.
◆ StartListeningCallback
using Ipc::StartListeningCallback = typedef AsyncCallback<StartListeningAnswer> |
Definition at line 34 of file StartListening.h.
◆ StoreMapFileNos
typedef StoreMapItems< std::atomic<sfileno> > Ipc::StoreMapFileNos |
Definition at line 178 of file StoreMap.h.
◆ StoreMapSliceId
typedef int32_t Ipc::StoreMapSliceId |
Definition at line 24 of file StoreMap.h.
◆ StoreMapSlices
Definition at line 156 of file StoreMap.h.
◆ StrandCoords
typedef std::vector<StrandCoord> Ipc::StrandCoords |
Definition at line 19 of file StrandCoords.h.
◆ WaitingInquiries
using Ipc::WaitingInquiries = typedef std::unordered_map< RequestId::Index, InquirerPointer, std::hash<RequestId::Index>, std::equal_to<RequestId::Index>, PoolingAllocator<WaitingInquiriesItem> > |
Definition at line 31 of file Inquirer.cc.
◆ WaitingInquiriesItem
using Ipc::WaitingInquiriesItem = typedef std::pair<const RequestId::Index, InquirerPointer> |
Definition at line 30 of file Inquirer.cc.
Enumeration Type Documentation
◆ FdNoteId
enum Ipc::FdNoteId |
◆ MessageType
enum Ipc::MessageType |
Enumerator | |
---|---|
mtNone | unspecified or unknown message kind; unused on the wire |
mtRegisterStrand | notifies about our strand existence |
mtStrandRegistered | acknowledges mtRegisterStrand acceptance |
mtFindStrand | a worker requests a strand from Coordinator |
mtStrandReady | an mtFindStrand answer: the strand exists and should be usable |
mtSharedListenRequest | |
mtSharedListenResponse | |
mtIpcIoNotification | |
mtCollapsedForwardingNotification | |
mtCacheMgrRequest | |
mtCacheMgrResponse | |
mtSnmpRequest | |
mtSnmpResponse | |
mtEnd | for message kind range checks; unused on the wire |
Definition at line 20 of file Messages.h.
Function Documentation
◆ AssertFlagIsSet()
void Ipc::AssertFlagIsSet | ( | std::atomic_flag & | flag | ) |
Same as assert(flag is set): The process assert()s if flag is not set. Side effect: The unset flag becomes set just before we assert(). Needed because atomic_flag cannot be compared with a boolean.
Definition at line 15 of file ReadWriteLock.cc.
References assert.
Referenced by Ipc::StoreMap::abortUpdating(), Ipc::StoreMap::closeForUpdating(), and Ipc::ReadWriteLock::unlockHeaders().
◆ DequeueRequest()
|
static |
Definition at line 43 of file Inquirer.cc.
References Assure, debugs, and TheWaitingInquirers.
Referenced by Ipc::Inquirer::HandleRemoteAck(), Ipc::Forwarder::HandleRemoteAck(), Ipc::Inquirer::requestTimedOut(), Ipc::Forwarder::swanSong(), and Ipc::Inquirer::swanSong().
◆ FdNote()
const char * Ipc::FdNote | ( | int | fdNodeId | ) |
Definition at line 16 of file FdNotes.cc.
References DBG_IMPORTANT, debugs, fdnEnd, and fdnNone.
Referenced by clientListenerConnectionOpened(), ImportFdIntoComm(), OpenedHttpSocket(), Ipc::Coordinator::openListenSocket(), ListeningStartedDialer::print(), SharedListenJoined(), and StartListening().
◆ ImportFdIntoComm()
const Comm::ConnectionPointer & Ipc::ImportFdIntoComm | ( | const Comm::ConnectionPointer & | conn, |
int | socktype, | ||
int | protocol, | ||
Ipc::FdNoteId | noteId | ||
) |
Definition at line 194 of file UdsOp.cc.
References comm_import_opened(), conn, DBG_CRITICAL, debugs, FdNote(), Ip::Address::FreeAddr(), and xstrerr().
Referenced by Mgr::Inquirer::Inquirer(), Snmp::Inquirer::Inquirer(), Mgr::FunAction::respond(), and Mgr::InfoAction::respond().
◆ JoinSharedListen()
void Ipc::JoinSharedListen | ( | const OpenListenerParams & | params, |
StartListeningCallback & | cb | ||
) |
Definition at line 143 of file SharedListen.cc.
References PendingOpenRequest::callback, debugs, PendingOpenRequest::params, SendSharedListenRequest(), TheDelayedRequests, and TheSharedListenRequestMap.
Referenced by StartListening().
◆ Mine()
const Answer & Ipc::Mine | ( | const Answer & | answer | ) |
Convenience wrapper for rejecting (freshly parsed) stale answers. All answers are assumed to have a "QuestionerId intendedRecepient()" member.
Definition at line 56 of file QuestionerId.h.
Referenced by Ipc::Coordinator::receive(), and Ipc::Strand::receive().
◆ MyQuestionerId()
Ipc::QuestionerId Ipc::MyQuestionerId | ( | ) |
Definition at line 18 of file QuestionerId.cc.
Referenced by Ipc::StrandMessage::NotifyCoordinator(), and Ipc::QuestionerId::rejectAnswerIfStale().
◆ operator<<() [1/4]
std::ostream & Ipc::operator<< | ( | std::ostream & | os, |
const ReadWriteLock & | lock | ||
) |
Definition at line 196 of file ReadWriteLock.cc.
References Ipc::ReadWriteLock::appending, Ipc::ReadWriteLock::readers, and Ipc::ReadWriteLock::writing.
◆ operator<<() [2/4]
std::ostream & Ipc::operator<< | ( | std::ostream & | os, |
const RequestId & | requestId | ||
) |
Definition at line 22 of file RequestId.cc.
References Ipc::RequestId::index(), and Ipc::RequestId::questioner().
◆ operator<<() [3/4]
std::ostream & Ipc::operator<< | ( | std::ostream & | os, |
const StartListeningAnswer & | answer | ||
) |
Definition at line 22 of file StartListening.cc.
References Ipc::StartListeningAnswer::conn, and Ipc::StartListeningAnswer::errNo.
◆ operator<<() [4/4]
|
inline |
Definition at line 62 of file QuestionerId.h.
References Ipc::QuestionerId::print().
◆ PathToAddress()
struct sockaddr_un Ipc::PathToAddress | ( | const String & | pathAddr | ) |
Definition at line 73 of file UdsOp.cc.
References AF_LOCAL, assert, sockaddr_un::sun_family, sockaddr_un::sun_path, and xstrncpy().
◆ SendMessage()
void Ipc::SendMessage | ( | const String & | toAddress, |
const TypedMsgHdr & | message | ||
) |
Definition at line 188 of file UdsOp.cc.
References AsyncJob::Start().
Referenced by Ipc::Coordinator::handleCacheMgrRequest(), Ipc::Coordinator::handleRegistrationRequest(), Ipc::Coordinator::handleSharedListenRequest(), Ipc::Coordinator::handleSnmpRequest(), Ipc::Inquirer::inquire(), IpcIoFile::Notify(), CollapsedForwarding::Notify(), Ipc::StrandMessage::NotifyCoordinator(), Ipc::Coordinator::notifySearcher(), IpcIoFile::open(), Mgr::Action::sendResponse(), Snmp::SendResponse(), SendSharedListenRequest(), and Ipc::Forwarder::start().
◆ SharedListenJoined()
void Ipc::SharedListenJoined | ( | const SharedListenResponse & | response | ) |
Definition at line 159 of file SharedListen.cc.
References Ipc::OpenListenerParams::addr, Assure, comm_import_opened(), conn, debugs, Ipc::SharedListenResponse::errNo, Ipc::SharedListenResponse::fd, FdNote(), Ipc::OpenListenerParams::fdNote, Ipc::OpenListenerParams::flags, Ip::Address::FreeAddr(), Ip::Address::getAddrInfo(), Ipc::RequestId::index(), Comm::IsConnOpen(), kickDelayedRequest(), Ipc::SharedListenResponse::mapId, Must, Ipc::OpenListenerParams::proto, ScheduleCallHere, Ipc::OpenListenerParams::sock_type, TheDelayedRequests, and TheSharedListenRequestMap.
Referenced by Ipc::Strand::receive().
◆ StartListening()
void Ipc::StartListening | ( | int | sock_type, |
int | proto, | ||
const Comm::ConnectionPointer & | listenConn, | ||
FdNoteId | fdNote, | ||
StartListeningCallback & | callback | ||
) |
Depending on whether SMP is on, either ask Coordinator to send us the listening FD or open a listening socket directly.
Definition at line 32 of file StartListening.cc.
References Ipc::OpenListenerParams::addr, AsyncCallback< Answer >::answer(), comm_open_listener(), COMM_REUSEPORT, debugs, enter_suid(), FdNote(), Ipc::OpenListenerParams::fdNote, Comm::Connection::flags, Ipc::OpenListenerParams::flags, Comm::IsConnOpen(), JoinSharedListen(), leave_suid(), Comm::Connection::local, Ipc::OpenListenerParams::proto, AsyncCallback< Answer >::release(), ScheduleCallHere, Ipc::OpenListenerParams::sock_type, and UsingSmp().
Referenced by clientStartListeningOn(), htcpOpenPorts(), icpOpenPorts(), and snmpOpenPorts().
Variable Documentation
◆ strandAddrLabel
|
extern |
Definition at line 23 of file Port.cc.
Referenced by Ipc::Coordinator::handleCacheMgrRequest(), Ipc::Coordinator::handleRegistrationRequest(), Ipc::Coordinator::handleSharedListenRequest(), Ipc::Coordinator::handleSnmpRequest(), Ipc::Inquirer::inquire(), IpcIoFile::Notify(), CollapsedForwarding::Notify(), and Ipc::Coordinator::notifySearcher().
◆ TheWaitingInquirers
|
static |
Definition at line 39 of file Inquirer.cc.
Referenced by DequeueRequest(), and Ipc::Inquirer::inquire().