1#ifndef RESIP_Connection_hxx
2#define RESIP_Connection_hxx
21class ConnectionManager;
115 virtual int read(
char* ,
const int ) {
return 0; }
117 virtual int write(
const char* ,
const int ) {
return 0; }
130 void removeFrontOutstandingSend();
132 bool mFlowTimerEnabled;
Heritable intrusive doubly linked list element templates.
Handles cross-platform sockets compatibility.
virtual Transport * transport() const
Collection of Connection per Transport.
Connection implements, via sockets, ConnectionBase for managed connections.
virtual int read(char *, const int)
pure virtual, but need concrete Connection for book-ends of lists
int performWrite()
send some or all of a queued data; remove from writable if completely written
bool performWrites(unsigned int max=0)
Call performWrite() repeatedly, until either the send queue is exhausted, the write() call fails (pro...
virtual void onWsClose(const Data &payload)
virtual bool checkConnectionTimedout()
virtual bool hasDataToRead()
always true – always add to fdset as read ready
virtual void onWsPing(const Data &payload)
bool mFirstWriteAfterConnectedPending
virtual bool isGood()
has valid connection
virtual bool isWritable()
virtual void onDoubleCRLF()
void enableFlowTimer()
Ensures this connection is in the FlowTimer LRU list in the connection manager.
virtual void invokeAfterSocketCreationFunc() const
void requestWrite(SendData *sendData)
queue data to write and add this to writable list
virtual void onSingleCRLF()
friend EncodeStream & operator<<(EncodeStream &strm, const resip::Connection &c)
static volatile bool mEnablePostConnectSocketFuncCall
virtual void processPollEvent(FdPollEventMask mask)
Virtual function of FdPollItemIf, called to process io events.
static void setEnablePostConnectSocketFuncCall(bool enabled=true)
bool performReads(unsigned int max=0)
Call read() repeatedly, until an error occurs (because the fd is not ready to read,...
virtual int write(const char *, const int)
pure virtual, but need concrete Connection for book-ends of lists
void ensureWritable()
ensure that we are on the writeable list if required
virtual bool transportWrite()
int read()
move data from the connection to the buffer; move this to front of least recently used list.
bool isFlowTimerEnabled()
An alternative to std::string, encapsulates an arbitrary buffer of bytes.
static void setEnablePostConnectSocketFuncCall(bool enabled=true)
The base class for Transport classes.
Represents a network address.
FlowKey mFlowKey
This is a (largely) opaque key that subclasses of Transport will use to help record/find flows.
dcm! – add UnusedChecking(_enum) below;
unsigned short FdPollEventMask
IntrusiveListElement2< Connection * > ConnectionWriteList
IntrusiveListElement3< Connection * > FlowTimerLruList
struct FdPollItemFake * FdPollItemHandle
This is opaque type used to identify a particular Item.
IntrusiveListElement1< Connection * > ConnectionReadList
EncodeStream & operator<<(EncodeStream &strm, const BaseException &e)
IntrusiveListElement< Connection * > ConnectionLruList
three intrusive list types for in-place reference