The C++ framework for developing highly scalable, high performance servers on Windows platforms.

IPoolableStreamSocket Class Reference
[SocketsStream SocketsInterfacesProtected destructors on abstract base classes]

Inheritance diagram for IPoolableStreamSocket:
Collaboration diagram for IPoolableStreamSocket:

List of all members.


Detailed Description

An interface that exists purely to tie together the poolable nature of a socket and the stream socket nature of a socket into a poolable stream socket. The CStreamSocketAllocator and CSequencedStreamSocketAllocator objects work in terms of this interface.

Public Types

typedef unsigned short UserDataIndex
typedef unsigned long DataLength
typedef unsigned short UserDataIndex

Public Member Functions

virtual void Attach (IPoolableSocketManager &manager, ISocketCallback &callback, SOCKET socket)=0
 Attach the supplied socket manager interface, callback inteface and SOCKET to the pooled socket.
virtual bool AbortConnectionIfManagedBy (const IPoolableSocketManager &manager, ConnectionClosureReason reason)=0
 Close if the manager that is attached to this socket is the same as the one supplied.
virtual void DumpIfManagedBy (const IPoolableSocketManager &manager) const =0
virtual bool AddRefIfPossible ()=0
 Attempt to obtain a reference from a socket that we currently don't own a reference to. This checks that the socket isn't currently in the middle of being destroyed and returns true if you now own a valid reference to the socket. Remember to call Release() on the socket if this function returns true.
virtual void Release ()=0
 Release a reference to the socket.
virtual void * GetUserPointer (UserDataIndex index) const =0
 Access the data stored at the specified index as a void pointer.
virtual void SetUserPointer (UserDataIndex index, void *pData)=0
 Update the data stored at the specified index as a void pointer.
virtual ULONG_PTR GetUserData (UserDataIndex index) const =0
 Access the data stored at the specified index as an unsigned long.
virtual void SetUserData (UserDataIndex index, ULONG_PTR data)=0
 Update the data stored at the specified index as an unsigned long.
Node * Next () const
 Return the next node in the list.
void Next (Node *pNext)
 Set the given node to be this nodes 'next node'.
void RemoveFromList ()
 If this node is currently in a list then it is removed.
bool InList (const CNodeList &list) const
 Returns true if this node is currently in the specified list.
bool InList () const
 Returns true if this node is currently in any list.
virtual void OutOfBandReadPending (bool isPending)=0
virtual void OnClientClose ()=0
virtual void OnConnectionReset (DWORD lastError)=0
virtual void Accepted ()=0
virtual void AboutToConnect ()=0
virtual void Connected ()=0
virtual bool CanWrite (size_t numBuffers=1)=0
void WriteCompleted () override=0
virtual SOCKET GetSocket () const =0
virtual bool HandleError (DWORD lastError)=0
virtual void SequenceRead (JetByteTools::IO::IBuffer &buffer)=0
virtual
JetByteTools::IO::CSmartBuffer 
GetNextOperation (JetByteTools::IO::CSmartBuffer &buffer)=0
virtual bool ProcessAndGetNextOperation (JetByteTools::IO::CSmartBuffer &buffer)=0
virtual void AllowOperationProcessingTransfer ()=0
virtual bool IsLockedByThisThread () const =0
virtual
JetByteTools::IO::IBuffer::SequenceNumber 
GetNextOperationSequenceNumber ()=0
virtual bool CanIssueFilteredWrite ()=0
virtual void SetReadSequenceNumber (JetByteTools::IO::IBuffer &buffer)=0
virtual void SetReadSequenceNumber (SequenceId id, JetByteTools::IO::IBuffer &buffer)=0
virtual void SetNagle (bool nagle) const =0
virtual void SetKeepAlive (Milliseconds time, Milliseconds interval) const =0
virtual void DisableKeepAlive () const =0
virtual DataLength GetReceiveBufferSize () const =0
 Calls getsockopt to get the value of SO_RCVBUF.
virtual DataLength SetReceiveBufferSize (DataLength requestedSize)=0
 Calls setsockopt to set SO_RCVBUF to the value specified and then calls getsockopt to return the buffer size that has actually been set.
virtual DataLength GetSendBufferSize () const =0
 Calls getsockopt to get the value of SO_SNDBUF.
virtual DataLength SetSendBufferSize (DataLength requestedSize)=0
 Calls setsockopt to set SO_SNDBUF to the value specified and then calls getsockopt to return the buffer size that has actually been set.
virtual
JetByteTools::Core::IReentrantLockableObject
GetLock () const =0
 Returns the critical section that is used for locking this socket's data for multi-threaded use.
virtual const
std::string & 
GetIdentifierA () const =0
virtual
JetByteTools::Core::_tstring 
GetIdentifier () const =0
virtual bool TryRead ()=0
 Attempts to read from the connection. Returns false if the connection is closed.
virtual bool TryRead (JetByteTools::IO::CSmartBuffer &buffer)=0
 Attempts to read from the connection. Returns false if the connection is closed. Note that this CAN throw an exception if the supplied buffer doesn't have any space left in it.
virtual bool TryRead (JetByteTools::IO::IBuffer *pBuffer)=0
 Attempts to read from the connection. Returns false if the connection is closed. Note that this CAN throw an exception if the supplied buffer doesn't have any space left in it.
virtual bool TryWrite (const char *pData, DataLength dataLength)=0
 Attempts to write to the connection. Returns false if the connection is closed.
virtual bool TryWrite (const BYTE *pData, DataLength dataLength)=0
 Attempts to write to the connection. Returns false if the connection is closed.
virtual bool TryWrite (JetByteTools::IO::CSmartBuffer &buffer)=0
 Attempts to write to the connection. Returns false if the connection is closed.
virtual bool TryWrite (JetByteTools::IO::IIterateableBufferChain &buffers)=0
 Attempts to write to the connection. Returns false if the connection is closed.
virtual void Shutdown ()=0
virtual void Shutdown (ShutdownHow how)=0
virtual bool AbortConnection ()=0
virtual bool AbortConnection (ConnectionClosureReason reason)=0
virtual CAddress GetLocalAddress () const =0
virtual CAddress GetRemoteAddress () const =0
virtual void AddRef ()=0
virtual void Release ()=0
virtual
ConnectionDirection 
GetConnectionDirection () const =0
virtual void Read ()=0
virtual void Read (CSmartBuffer &buffer)=0
virtual void Read (IBuffer *pBuffer)=0
virtual void Write (const char *pData, DataLength dataLength)=0
virtual void Write (const BYTE *pData, DataLength dataLength)=0
virtual void Write (CSmartBuffer &buffer)=0
virtual void Write (IIterateableBufferChain &buffers)=0
CSmartBuffer Allocate () override=0
 Allocate an instance of IBuffer, remember to call Release() on it when you're done with it.
virtual CSmartBuffer Allocate (IAllocateBuffer &allocator)=0
CSmartBuffer AllocateCustomSizedBuffer (IBuffer::BufferSize bufferSize) override=0
virtual CSmartBuffer AllocateCustomSizedBuffer (IAllocateBuffer &allocator, IBuffer::BufferSize bufferSize)=0
virtual void AddBufferToPool (IBuffer &buffer)=0
virtual void OnError (DWORD lastError)=0
 Called when an error has occurred before the operation can be handled.
virtual void HandleOperation (IBuffer *pBuffer, DWORD ioSize, DWORD lastError)=0
 Called when a buffer has an operation that needs to be handled.
virtual DWORD GetError (const OVERLAPPED &overlapped)=0

Static Public Attributes

static
JETBYTE_CONSTEXPR
UserDataIndex 
InvalidUserDataIndex = 0xFFFF
static
JETBYTE_CONSTEXPR
UserDataIndex 
InvalidUserDataIndex = 0xFFFF

Protected Member Functions

virtual ~IPoolableStreamSocket ()
 We never delete instances of this interface; you must manage the lifetime of the class that implements it.

Static Protected Member Functions

static DWORD GetError (HANDLE handle, const OVERLAPPED &overlapped)

Member Typedef Documentation

typedef unsigned long DataLength [inherited]


Constructor & Destructor Documentation

virtual ~IPoolableStreamSocket (  )  [protected, virtual]

We never delete instances of this interface; you must manage the lifetime of the class that implements it.


Member Function Documentation

virtual bool AddRefIfPossible (  )  [pure virtual, inherited]

CNodeList::Node * Next (  )  const [inherited]

Return the next node in the list.

void Next ( Node pNext  )  [inherited]

Set the given node to be this nodes 'next node'.

void RemoveFromList (  )  [inherited]

If this node is currently in a list then it is removed.

bool InList ( const CNodeList list  )  const [inherited]

Returns true if this node is currently in the specified list.

bool InList (  )  const [inherited]

Returns true if this node is currently in any list.

virtual void OutOfBandReadPending ( bool  isPending  )  [pure virtual, inherited]

virtual void OnClientClose (  )  [pure virtual, inherited]

virtual void OnConnectionReset ( DWORD  lastError  )  [pure virtual, inherited]

virtual bool HandleError ( DWORD  lastError  )  [pure virtual, inherited]

virtual void SequenceRead ( JetByteTools::IO::IBuffer &  buffer  )  [pure virtual, inherited]

virtual JetByteTools::IO::IBuffer::SequenceNumber GetNextOperationSequenceNumber (  )  [pure virtual, inherited]

virtual void SetReadSequenceNumber ( JetByteTools::IO::IBuffer &  buffer  )  [pure virtual, inherited]

virtual void SetReadSequenceNumber ( SequenceId  id,
JetByteTools::IO::IBuffer &  buffer 
) [pure virtual, inherited]

virtual void SetNagle ( bool  nagle  )  const [pure virtual, inherited]

virtual void SetKeepAlive ( Milliseconds  time,
Milliseconds  interval 
) const [pure virtual, inherited]

virtual void DisableKeepAlive (  )  const [pure virtual, inherited]

virtual DataLength GetReceiveBufferSize (  )  const [pure virtual, inherited]

Calls getsockopt to get the value of SO_RCVBUF.

virtual DataLength SetReceiveBufferSize ( DataLength  requestedSize  )  [pure virtual, inherited]

Calls setsockopt to set SO_RCVBUF to the value specified and then calls getsockopt to return the buffer size that has actually been set.

virtual DataLength GetSendBufferSize (  )  const [pure virtual, inherited]

Calls getsockopt to get the value of SO_SNDBUF.

virtual DataLength SetSendBufferSize ( DataLength  requestedSize  )  [pure virtual, inherited]

Calls setsockopt to set SO_SNDBUF to the value specified and then calls getsockopt to return the buffer size that has actually been set.

virtual JetByteTools::Core::IReentrantLockableObject& GetLock (  )  const [pure virtual, inherited]

Returns the critical section that is used for locking this socket's data for multi-threaded use.

Implemented in TAsyncSocket< JetByteTools::Socket::IPoolableStreamSocket, JetByteTools::Socket::IStreamSocketConnectionManager, JetByteTools::Socket::IStreamSocketCallback >.

virtual bool TryRead ( JetByteTools::IO::IBuffer *  pBuffer  )  [pure virtual, inherited]

virtual bool TryWrite ( const char *  pData,
DataLength  dataLength 
) [pure virtual, inherited]

Attempts to write to the connection. Returns false if the connection is closed.

virtual bool TryWrite ( const BYTE pData,
DataLength  dataLength 
) [pure virtual, inherited]

Attempts to write to the connection. Returns false if the connection is closed.

virtual bool AbortConnection ( ConnectionClosureReason  reason  )  [pure virtual, inherited]

virtual void Read ( IBuffer *  pBuffer  )  [pure virtual, inherited]

virtual void Write ( const char *  pData,
DataLength  dataLength 
) [pure virtual, inherited]

virtual void Write ( const BYTE pData,
DataLength  dataLength 
) [pure virtual, inherited]

CSmartBuffer AllocateCustomSizedBuffer ( IBuffer::BufferSize  bufferSize  )  [override, pure virtual, inherited]

Implements IAllocateBuffer.

Implemented in CNullBufferPool.

virtual CSmartBuffer AllocateCustomSizedBuffer ( IAllocateBuffer allocator,
IBuffer::BufferSize  bufferSize 
) [pure virtual, inherited]

Implemented in CNullBufferPool.

virtual void AddBufferToPool ( IBuffer &  buffer  )  [pure virtual, inherited]

Implemented in CNullBufferPool.

virtual void OnError ( DWORD  lastError  )  [pure virtual, inherited]

Called when an error has occurred before the operation can be handled.

Implemented in TDatagramSocketServer.

virtual void HandleOperation ( IBuffer *  pBuffer,
DWORD  ioSize,
DWORD  lastError 
) [pure virtual, inherited]

Called when a buffer has an operation that needs to be handled.

DWORD GetError ( HANDLE  handle,
const OVERLAPPED overlapped 
) [static, protected, inherited]


Member Data Documentation

JETBYTE_CONSTEXPR UserDataIndex InvalidUserDataIndex = 0xFFFF [static, inherited]

JETBYTE_CONSTEXPR UserDataIndex InvalidUserDataIndex = 0xFFFF [static, inherited]


Generated on Sun Sep 12 19:10:27 2021 for The Server Framework - v7.4 by doxygen 1.5.3