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

CStreamSocket Class Reference
[Stream SocketsSocketsOpaque user data]

Inheritance diagram for CStreamSocket:
Collaboration diagram for CStreamSocket:

List of all members.


Detailed Description

A stream socket. Note that this socket does NOT support read and write sequencing.

Public Types

typedef TAsyncSocket
< IPoolableStreamSocket,
IStreamSocketConnectionManager,
IStreamSocketCallback
Base

Public Member Functions

 CStreamSocket (JetByteTools::Core::IIndexedOpaqueUserData::UserDataIndex numberOfUserDataSlots, PerSocketBufferPoolingLimit maxPooledBuffers, ConsecutiveSocketOperations maxConsecutiveOperations)
 Create a socket with the specified number of user data slots.
 CStreamSocket (const CStreamSocket &rhs)
CStreamSocketoperator= (const CStreamSocket &rhs)
void SetNagle (bool nagle) const override
void SetKeepAlive (Milliseconds time, Milliseconds interval) const override
void DisableKeepAlive () const override
DataLength GetReceiveBufferSize () const override
DataLength SetReceiveBufferSize (DataLength requestedSize) override
DataLength SetSendBufferSize (DataLength requestedSize) override
DataLength GetSendBufferSize () const override

Protected Member Functions

 ~CStreamSocket ()
void OnAttach () override
void CancelIOIfNecessary () override
virtual const
std::string & 
GetIdentifierA () const
virtual
JetByteTools::Core::_tstring 
GetIdentifier () const
bool IsLockedByThisThread () const override
JetByteTools::IO::IBuffer::SequenceNumber GetNextOperationSequenceNumber () override
JetByteTools::IO::CSmartBuffer Allocate () override
JetByteTools::IO::CSmartBuffer Allocate (JetByteTools::IO::IAllocateBuffer &allocator) override
JetByteTools::IO::CSmartBuffer AllocateCustomSizedBuffer (JetByteTools::IO::IBuffer::BufferSize bufferSize) override
JetByteTools::IO::CSmartBuffer AllocateCustomSizedBuffer (JetByteTools::IO::IAllocateBuffer &allocator, JetByteTools::IO::IBuffer::BufferSize bufferSize) override
void AddBufferToPool (JetByteTools::IO::IBuffer &buffer) override
virtual bool CloseSocket ()
virtual void Read ()
virtual void Read (JetByteTools::IO::CSmartBuffer &buffer)
virtual void Read (JetByteTools::IO::IBuffer *pBuffer)
virtual void Write (const char *pData, JetByteTools::IO::IStream::DataLength dataLength)
virtual void Write (const BYTE *pData, JetByteTools::IO::IStream::DataLength dataLength)
virtual void Write (JetByteTools::IO::CSmartBuffer &buffer)
virtual void Write (JetByteTools::IO::IIterateableBufferChain &buffers)
virtual bool TryRead ()
virtual bool TryRead (JetByteTools::IO::CSmartBuffer &buffer)
virtual bool TryRead (JetByteTools::IO::IBuffer *pBuffer)
virtual bool TryWrite (const char *pData, JetByteTools::IO::IStream::DataLength dataLength)
virtual bool TryWrite (const BYTE *pData, JetByteTools::IO::IStream::DataLength dataLength)
virtual bool TryWrite (JetByteTools::IO::CSmartBuffer &buffer)
virtual bool TryWrite (JetByteTools::IO::IIterateableBufferChain &buffers)
virtual void Shutdown ()
virtual void Shutdown (ShutdownHow how)
virtual bool AbortConnection ()
virtual CAddress GetLocalAddress () const
virtual CAddress GetRemoteAddress () const
virtual void AddRef ()
virtual void Release ()
virtual bool WeOwnOnlyReference () const
virtual void Attach (IPoolableSocketManager &manager, ISocketCallback &callback, SOCKET socket)
virtual bool AbortConnectionIfManagedBy (const IPoolableSocketManager &manager, ConnectionClosureReason reason)
virtual void DumpIfManagedBy (const IPoolableSocketManager &manager) const
virtual bool AddRefIfPossible ()
virtual DWORD GetError (const OVERLAPPED &overlapped)
 Implement IHandler.
virtual void HandleOperation (JetByteTools::IO::IBuffer *pBuffer, DWORD ioSize, DWORD lastError)
virtual void * GetUserPointer (JetByteTools::Core::IIndexedOpaqueUserData::UserDataIndex index) const
virtual void SetUserPointer (JetByteTools::Core::IIndexedOpaqueUserData::UserDataIndex index, void *pData)
virtual ULONG_PTR GetUserData (JetByteTools::Core::IIndexedOpaqueUserData::UserDataIndex index) const
virtual void SetUserData (JetByteTools::Core::IIndexedOpaqueUserData::UserDataIndex index, ULONG_PTR data)
virtual void WriteCompleted ()
virtual
JetByteTools::Core::IReentrantLockableObject
GetLock () const
virtual void Accepted ()
virtual void AboutToConnect ()
virtual void Connected ()
virtual
ConnectionDirection 
GetConnectionDirection () const
virtual SOCKET GetSocket () const
virtual bool CanWrite (size_t numBuffers=1)
virtual bool CanIssueFilteredWrite ()
virtual bool WritePending ()
virtual void ForceWritePending ()
virtual
JetByteTools::IO::CSmartBuffer 
GetNextOperation (JetByteTools::IO::CSmartBuffer &buffer)
virtual bool ProcessAndGetNextOperation (JetByteTools::IO::CSmartBuffer &buffer)
virtual void AllowOperationProcessingTransfer ()
virtual void OnDetach ()
void IncrementReferenceCountFromZero ()
virtual bool OnFinalRelease ()
bool IsValid () const

Protected Attributes

Manager * m_pManager
Callback * m_pCallback
SOCKET m_socket
JetByteTools::Core::CAtomicLong m_outstandingWrites
JetByteTools::Core::CAtomicBool m_writeShutdown
JetByteTools::Core::CAtomicBool m_readShutdown
ConnectionDirection m_direction
JetByteTools::Core::CReentrantLockableObjectTracksLockingThread m_lock

Member Typedef Documentation


Constructor & Destructor Documentation

CStreamSocket ( JetByteTools::Core::IIndexedOpaqueUserData::UserDataIndex  numberOfUserDataSlots,
PerSocketBufferPoolingLimit  maxPooledBuffers,
ConsecutiveSocketOperations  maxConsecutiveOperations 
)

Create a socket with the specified number of user data slots.

CStreamSocket ( const CStreamSocket rhs  ) 

~CStreamSocket (  )  [protected]


Member Function Documentation

CStreamSocket& operator= ( const CStreamSocket rhs  ) 

void SetNagle ( bool  nagle  )  const [override]

void SetKeepAlive ( Milliseconds  time,
Milliseconds  interval 
) const [override]

void DisableKeepAlive (  )  const [override]

CStreamSocket::DataLength GetReceiveBufferSize (  )  const [override]

CStreamSocket::DataLength SetReceiveBufferSize ( DataLength  requestedSize  )  [override]

CStreamSocket::DataLength SetSendBufferSize ( DataLength  requestedSize  )  [override]

CStreamSocket::DataLength GetSendBufferSize (  )  const [override]

void OnAttach (  )  [override, protected, virtual]

Reimplemented from TAsyncSocket.

Reimplemented in CSequencedStreamSocket.

void CancelIOIfNecessary (  )  [override, protected, virtual]

Reimplemented from TAsyncSocket.

const std::string & GetIdentifierA (  )  const [inline, protected, virtual, inherited]

JetByteTools::Core::_tstring GetIdentifier (  )  const [inline, protected, virtual, inherited]

bool IsLockedByThisThread (  )  const [inline, override, protected, inherited]

JetByteTools::IO::IBuffer::SequenceNumber GetNextOperationSequenceNumber (  )  [inline, override, protected, inherited]

JetByteTools::IO::CSmartBuffer Allocate (  )  [inline, override, protected, inherited]

JetByteTools::IO::CSmartBuffer Allocate ( JetByteTools::IO::IAllocateBuffer allocator  )  [inline, override, protected, inherited]

JetByteTools::IO::CSmartBuffer AllocateCustomSizedBuffer ( JetByteTools::IO::IBuffer::BufferSize  bufferSize  )  [inline, override, protected, inherited]

JetByteTools::IO::CSmartBuffer AllocateCustomSizedBuffer ( JetByteTools::IO::IAllocateBuffer allocator,
JetByteTools::IO::IBuffer::BufferSize  bufferSize 
) [inline, override, protected, inherited]

void AddBufferToPool ( JetByteTools::IO::IBuffer &  buffer  )  [inline, override, protected, inherited]

bool CloseSocket (  )  [inline, protected, virtual, inherited]

void Read (  )  [inline, protected, virtual, inherited]

void Read ( JetByteTools::IO::CSmartBuffer buffer  )  [inline, protected, virtual, inherited]

void Read ( JetByteTools::IO::IBuffer *  pBuffer  )  [inline, protected, virtual, inherited]

void Write ( const char *  pData,
JetByteTools::IO::IStream::DataLength  dataLength 
) [inline, protected, virtual, inherited]

void Write ( const BYTE pData,
JetByteTools::IO::IStream::DataLength  dataLength 
) [inline, protected, virtual, inherited]

void Write ( JetByteTools::IO::CSmartBuffer buffer  )  [inline, protected, virtual, inherited]

void Write ( JetByteTools::IO::IIterateableBufferChain buffers  )  [inline, protected, virtual, inherited]

bool TryRead (  )  [inline, protected, virtual, inherited]

bool TryRead ( JetByteTools::IO::CSmartBuffer buffer  )  [inline, protected, virtual, inherited]

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

bool TryWrite ( const char *  pData,
JetByteTools::IO::IStream::DataLength  dataLength 
) [inline, protected, virtual, inherited]

bool TryWrite ( const BYTE pData,
JetByteTools::IO::IStream::DataLength  dataLength 
) [inline, protected, virtual, inherited]

bool TryWrite ( JetByteTools::IO::CSmartBuffer buffer  )  [inline, protected, virtual, inherited]

bool TryWrite ( JetByteTools::IO::IIterateableBufferChain buffers  )  [inline, protected, virtual, inherited]

void Shutdown (  )  [inline, protected, virtual, inherited]

void Shutdown ( ShutdownHow  how  )  [inline, protected, virtual, inherited]

Reimplemented in CDatagramSocket.

bool AbortConnection (  )  [inline, protected, virtual, inherited]

CAddress GetLocalAddress (  )  const [inline, protected, virtual, inherited]

CAddress GetRemoteAddress (  )  const [inline, protected, virtual, inherited]

Reimplemented in CDatagramServerSocket.

void AddRef (  )  [inline, protected, virtual, inherited]

void Release (  )  [inline, protected, virtual, inherited]

bool WeOwnOnlyReference (  )  const [inline, protected, virtual, inherited]

void Attach ( IPoolableSocketManager manager,
ISocketCallback callback,
SOCKET  socket 
) [inline, protected, virtual, inherited]

bool AbortConnectionIfManagedBy ( const IPoolableSocketManager manager,
ConnectionClosureReason  reason 
) [inline, protected, virtual, inherited]

void DumpIfManagedBy ( const IPoolableSocketManager manager  )  const [inline, protected, virtual, inherited]

bool AddRefIfPossible (  )  [inline, protected, virtual, inherited]

DWORD GetError ( const OVERLAPPED overlapped  )  [inline, protected, virtual, inherited]

Implement IHandler.

void HandleOperation ( JetByteTools::IO::IBuffer *  pBuffer,
DWORD  ioSize,
DWORD  lastError 
) [inline, protected, virtual, inherited]

void * GetUserPointer ( JetByteTools::Core::IIndexedOpaqueUserData::UserDataIndex  index  )  const [inline, protected, virtual, inherited]

void SetUserPointer ( JetByteTools::Core::IIndexedOpaqueUserData::UserDataIndex  index,
void *  pData 
) [inline, protected, virtual, inherited]

ULONG_PTR GetUserData ( JetByteTools::Core::IIndexedOpaqueUserData::UserDataIndex  index  )  const [inline, protected, virtual, inherited]

void SetUserData ( JetByteTools::Core::IIndexedOpaqueUserData::UserDataIndex  index,
ULONG_PTR  data 
) [inline, protected, virtual, inherited]

void WriteCompleted (  )  [inline, protected, virtual, inherited]

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

void Accepted (  )  [inline, protected, virtual, inherited]

void AboutToConnect (  )  [inline, protected, virtual, inherited]

void Connected (  )  [inline, protected, virtual, inherited]

ConnectionDirection GetConnectionDirection (  )  const [inline, protected, virtual, inherited]

SOCKET GetSocket (  )  const [inline, protected, virtual, inherited]

bool CanWrite ( size_t  numBuffers = 1  )  [inline, protected, virtual, inherited]

bool CanIssueFilteredWrite (  )  [inline, protected, virtual, inherited]

bool WritePending (  )  [inline, protected, virtual, inherited]

void ForceWritePending (  )  [inline, protected, virtual, inherited]

JetByteTools::IO::CSmartBuffer GetNextOperation ( JetByteTools::IO::CSmartBuffer buffer  )  [inline, protected, virtual, inherited]

bool ProcessAndGetNextOperation ( JetByteTools::IO::CSmartBuffer buffer  )  [inline, protected, virtual, inherited]

void AllowOperationProcessingTransfer (  )  [inline, protected, virtual, inherited]

virtual void OnDetach (  )  [inline, protected, virtual, inherited]

Reimplemented in CSequencedStreamSocket.

void IncrementReferenceCountFromZero (  )  [inline, protected, inherited]

bool OnFinalRelease (  )  [inline, protected, virtual, inherited]

bool IsValid (  )  const [inline, protected, inherited]


Member Data Documentation

Manager* m_pManager [protected, inherited]

Callback* m_pCallback [protected, inherited]

SOCKET m_socket [protected, inherited]

ConnectionDirection m_direction [protected, inherited]

JetByteTools::Core::CReentrantLockableObjectTracksLockingThread m_lock [mutable, protected, inherited]


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