Ipc Namespace Reference


namespace  Mem


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...


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< StoreMapSliceStoreMapSlices
 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< StrandCoordStrandCoords
 a collection of strand coordinates; the order, if any, is owner-dependent More...


enum  FdNoteId {
  fdnNone ,
  fdnHttpSocket ,
  fdnHttpsSocket ,
  fdnFtpSocket ,
  fdnInSnmpSocket ,
  fdnOutSnmpSocket ,
  fdnInIcpSocket ,
  fdnInHtcpSocket ,
 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 ,
 message class identifier More...


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::ConnectionPointerImportFdIntoComm (const Comm::ConnectionPointer &conn, int socktype, int protocol, FdNoteId noteId)
 import socket fd from another strand into our Comm state More...


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

Definition at line 29 of file Inquirer.cc.

◆ StartListeningCallback

◆ 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

Definition at line 19 of file StrandCoords.h.

◆ WaitingInquiries

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

fd_note() label ID


Definition at line 20 of file FdNotes.h.

◆ MessageType


unspecified or unknown message kind; unused on the wire


notifies about our strand existence


acknowledges mtRegisterStrand acceptance


a worker requests a strand from Coordinator


an mtFindStrand answer: the strand exists and should be usable


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

◆ FdNote()

◆ ImportFdIntoComm()

◆ JoinSharedListen()

◆ Mine()

template<class Answer >
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 ( )

◆ operator<<() [1/4]

std::ostream & Ipc::operator<< ( std::ostream &  os,
const ReadWriteLock lock 

◆ 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 

◆ operator<<() [4/4]

std::ostream & Ipc::operator<< ( std::ostream &  os,
const QuestionerId qid 

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

◆ SharedListenJoined()

◆ StartListening()

Variable Documentation

◆ strandAddrLabel

◆ TheWaitingInquirers

WaitingInquiries Ipc::TheWaitingInquirers

Definition at line 39 of file Inquirer.cc.

Referenced by DequeueRequest(), and Ipc::Inquirer::inquire().






Web Site Translations