Waits for and receives incoming IPC messages; kids handle the messages. More...

#include <Port.h>

Inheritance diagram for Ipc::Port:
Collaboration diagram for Ipc::Port:

Public Types

typedef CbcPointer< AsyncJobPointer

Public Member Functions

 Port (const String &aListenAddr)
bool canBeCalled (AsyncCall &call) const
 whether we can be called More...
void callStart (AsyncCall &call)
virtual void callEnd ()
 called right after the called job method More...
virtual void callException (const std::exception &e)
 called when the job throws during an async call More...
virtual void * toCbdata ()=0

Static Public Member Functions

static String MakeAddr (const char *proccessLabel, int id)
 calculates IPC message address for strand id of processLabel type More...
static String CoordinatorAddr ()
 get the IPC message address for coordinator process More...
static Pointer Start (AsyncJob *job)
 starts a freshly created job (i.e., makes the job asynchronous) More...

Public Attributes

struct sockaddr_un address
 UDS address from path; treat as read-only. More...

Protected Member Functions

virtual void start ()=0
 called by AsyncStart; do not call directly More...
virtual bool doneAll () const
 whether positive goal has been reached More...
void doListen ()
 read the next incoming message More...
virtual void receive (const TypedMsgHdr &)=0
virtual void timedout ()
 called after setTimeout() if timed out More...
Comm::ConnectionPointerconn ()
 creates if needed and returns raw UDS socket descriptor More...
void setTimeout (int seconds, const char *handlerName)
 call timedout() if no UDS messages in a given number of seconds More...
void clearTimeout ()
 remove previously set timeout, if any More...
void setOptions (int newOptions)
 changes socket options More...
void deleteThis (const char *aReason)
void mustStop (const char *aReason)
bool done () const
 the job is destroyed in callEnd() when done() More...
virtual void swanSong ()
virtual const char * status () const
 internal cleanup; do not call directly More...

Protected Attributes

const char * stopReason
 reason for forcing done() to be true More...
const char * typeName
 kid (leaf) class name, for debugging More...
AsyncCall::Pointer inCall
 the asynchronous call being handled, if any More...
const InstanceId< AsyncJobid
 job identifier More...

Private Member Functions

void noteRead (const CommIoCbParams &params)
void receiveOrIgnore (const TypedMsgHdr &)
 receive() but ignore any errors More...
void noteTimeout (const CommTimeoutCbParams &p)
 Comm timeout callback; calls timedout() More...

Private Attributes

TypedMsgHdr buf
 msghdr struct filled by Comm More...
int options
 UDS options. More...
Comm::ConnectionPointer conn_
 UDS descriptor. More...

Detailed Description

Definition at line 21 of file Port.h.

Member Typedef Documentation

◆ Pointer

Definition at line 34 of file AsyncJob.h.

Constructor & Destructor Documentation

◆ Port()

Ipc::Port::Port ( const String aListenAddr)

Definition at line 25 of file Port.cc.

References COMM_DOBIND, COMM_NONBLOCKING, and Ipc::UdsOp::setOptions().

Member Function Documentation

◆ callEnd()

void AsyncJob::callEnd ( )

◆ callException()

◆ callStart()

void AsyncJob::callStart ( AsyncCall call)

◆ canBeCalled()

bool AsyncJob::canBeCalled ( AsyncCall call) const

Definition at line 101 of file AsyncJob.cc.

References AsyncCall::cancel(), debugs, HERE(), AsyncJob::inCall, and NULL.

◆ clearTimeout()

void Ipc::UdsOp::clearTimeout ( )

Definition at line 62 of file UdsOp.cc.

References commUnsetConnTimeout(), and conn.

◆ conn()

Comm::ConnectionPointer & Ipc::UdsOp::conn ( )

Definition at line 41 of file UdsOp.cc.

References COMM_DOBIND, comm_open_uds(), Comm::IsConnOpen(), Must, and NULL.

◆ CoordinatorAddr()

◆ deleteThis()

void AsyncJob::deleteThis ( const char *  aReason)

◆ doListen()

void Ipc::Port::doListen ( )

Definition at line 37 of file Port.cc.

References buf, comm_read(), conn, debugs, HERE(), JobCallback, and noteRead().

◆ done()

bool AsyncJob::done ( ) const

◆ doneAll()

bool Ipc::Port::doneAll ( ) const

Reimplemented from AsyncJob.

Definition at line 47 of file Port.cc.

◆ MakeAddr()

String Ipc::Port::MakeAddr ( const char *  proccessLabel,
int  id 

◆ mustStop()

◆ noteRead()

void Ipc::Port::noteRead ( const CommIoCbParams params)

Definition at line 96 of file Port.cc.

References assert, CommIoCbParams::buf, buf, CommCommonCbParams::conn, debugs, CommCommonCbParams::flag, HERE(), and Comm::OK.

Referenced by doListen().

◆ noteTimeout()

void Ipc::UdsOp::noteTimeout ( const CommTimeoutCbParams p)

Definition at line 67 of file UdsOp.cc.

Referenced by Ipc::UdsOp::setTimeout().

◆ receive()

void Ipc::Port::receive ( const TypedMsgHdr message)
protectedpure virtual

handle IPC message just read kids must call parent method when they do not recognize the message type

Implemented in Ipc::Strand, and Ipc::Coordinator.

Definition at line 78 of file Port.cc.

References Here, Ipc::TypedMsgHdr::rawType(), and ToSBuf().

Referenced by Ipc::Coordinator::receive(), and Ipc::Strand::receive().

◆ receiveOrIgnore()

void Ipc::Port::receiveOrIgnore ( const TypedMsgHdr message)

◆ setOptions()

void Ipc::UdsOp::setOptions ( int  newOptions)

Definition at line 35 of file UdsOp.cc.

Referenced by Port().

◆ setTimeout()

void Ipc::UdsOp::setTimeout ( int  seconds,
const char *  handlerName 

Definition at line 54 of file UdsOp.cc.

References asyncCall(), commSetConnTimeout(), conn, handler, and Ipc::UdsOp::noteTimeout().

◆ start()

void Ipc::Port::start ( )
protectedpure virtual

Reimplemented from AsyncJob.

Implemented in Ipc::Strand, and Ipc::Coordinator.

Definition at line 31 of file Port.cc.

References AsyncJob::start().

Referenced by Ipc::Coordinator::start(), and Ipc::Strand::start().

◆ Start()

◆ status()

const char * AsyncJob::status ( ) const

◆ swanSong()

◆ timedout()

virtual void Ipc::UdsOp::timedout ( )

Reimplemented in Ipc::UdsSender, and Ipc::Strand.

Definition at line 40 of file UdsOp.h.

◆ toCbdata()

virtual void* CbdataParent::toCbdata ( )
pure virtualinherited

Member Data Documentation

◆ address

struct sockaddr_un Ipc::UdsOp::address

Definition at line 34 of file UdsOp.h.

Referenced by Ipc::UdsSender::UdsSender().

◆ buf

TypedMsgHdr Ipc::Port::buf

Definition at line 47 of file Port.h.

◆ conn_

Comm::ConnectionPointer Ipc::UdsOp::conn_

Definition at line 56 of file UdsOp.h.

◆ id

const InstanceId<AsyncJob> AsyncJob::id

Definition at line 72 of file AsyncJob.h.

◆ inCall

AsyncCall::Pointer AsyncJob::inCall

◆ options

int Ipc::UdsOp::options

Definition at line 55 of file UdsOp.h.

◆ stopReason

const char* AsyncJob::stopReason

◆ typeName

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






Web Site Translations