Ipc Namespace Reference

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

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::ConnectionPointerImportFdIntoComm (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

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

Enumerator
fdnNone 
fdnHttpSocket 
fdnHttpsSocket 
fdnFtpSocket 
fdnInSnmpSocket 
fdnOutSnmpSocket 
fdnInIcpSocket 
fdnInHtcpSocket 
fdnEnd 

Definition at line 20 of file FdNotes.h.

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

◆ FdNote()

◆ ImportFdIntoComm()

const Comm::ConnectionPointer & Ipc::ImportFdIntoComm ( const Comm::ConnectionPointer conn,
int  socktype,
int  protocol,
Ipc::FdNoteId  noteId 
)

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

◆ SharedListenJoined()

◆ StartListening()

Variable Documentation

◆ strandAddrLabel

◆ TheWaitingInquirers

WaitingInquiries Ipc::TheWaitingInquirers
static

Definition at line 39 of file Inquirer.cc.

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

 

Introduction

Documentation

Support

Miscellaneous

Web Site Translations

Mirrors