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

CDatagramServerSocket Class Reference
[Datagram SocketsSocketsOpaque user data]

Inheritance diagram for CDatagramServerSocket:
Collaboration diagram for CDatagramServerSocket:

List of all members.


Detailed Description

A datagram socket that allows you to SendTo() any host but restricts who you can RecvFrom(), basically you can only recv data from the port that the associated server is listening on.

Public Types

typedef TAsyncSocket
< IPoolableDatagramServerSocket,
IDatagramServerSocketConnectionManager,
IDatagramServerSocketCallback
Base

Public Member Functions

 CDatagramServerSocket (JetByteTools::Core::IIndexedOpaqueUserData::UserDataIndex numberOfUserDataSlots, PerSocketBufferPoolingLimit maxPooledBuffers, ConsecutiveSocketOperations maxConsecutiveOperations)
 CDatagramServerSocket (const CDatagramServerSocket &rhs)
CDatagramServerSocketoperator= (const CDatagramServerSocket &rhs)
void SendTo (const IAddress &address, const char *pData, DataLength dataLength) override
void SendTo (const IAddress &address, const BYTE *pData, DataLength dataLength) override
void SendTo (const IAddress &address, JetByteTools::IO::CSmartBuffer &buffer) override
bool TrySendTo (const IAddress &address, const char *pData, DataLength dataLength) override
bool TrySendTo (const IAddress &address, const BYTE *pData, DataLength dataLength) override
bool TrySendTo (const IAddress &address, JetByteTools::IO::CSmartBuffer &buffer) override
CAddress GetRemoteAddress () const override
void JoinMulticastGroup (const IAddress &groupAddress, const IAddress &interfaceAddress) override
void BlockMulticastGroupSource (const IAddress &groupAddress, const IAddress &interfaceAddress, const IAddress &sourceAddress) override
void UnblockMulticastGroupSource (const IAddress &groupAddress, const IAddress &interfaceAddress, const IAddress &sourceAddress) override
void LeaveMulticastGroup (const IAddress &groupAddress, const IAddress &interfaceAddress) override
void IncludeMulticastSource (const IAddress &groupAddress, const IAddress &interfaceAddress, const IAddress &sourceAddress) override
void ExcludeMulticastSource (const IAddress &groupAddress, const IAddress &interfaceAddress, const IAddress &sourceAddress) override
void SetMulticastSendInterface (const IAddress &interfaceAddress, TimeToLive multicastTTL=1, bool enableLoopback=false) override

Protected Member Functions

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 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 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 OnAttach ()
virtual void CancelIOIfNecessary ()
virtual void OnDetach ()
void IncrementReferenceCountFromZero ()
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


Member Function Documentation

CDatagramServerSocket& operator= ( const CDatagramServerSocket rhs  ) 

void SendTo ( const IAddress address,
const char *  pData,
DataLength  dataLength 
) [override]

void SendTo ( const IAddress address,
const BYTE pData,
DataLength  dataLength 
) [override]

void SendTo ( const IAddress address,
JetByteTools::IO::CSmartBuffer buffer 
) [override]

bool TrySendTo ( const IAddress address,
const char *  pData,
DataLength  dataLength 
) [override]

bool TrySendTo ( const IAddress address,
const BYTE pData,
DataLength  dataLength 
) [override]

bool TrySendTo ( const IAddress address,
JetByteTools::IO::CSmartBuffer buffer 
) [override]

CAddress GetRemoteAddress (  )  const [override, virtual]

Reimplemented from TAsyncSocket.

void JoinMulticastGroup ( const IAddress groupAddress,
const IAddress interfaceAddress 
) [override]

void BlockMulticastGroupSource ( const IAddress groupAddress,
const IAddress interfaceAddress,
const IAddress sourceAddress 
) [override]

void UnblockMulticastGroupSource ( const IAddress groupAddress,
const IAddress interfaceAddress,
const IAddress sourceAddress 
) [override]

void LeaveMulticastGroup ( const IAddress groupAddress,
const IAddress interfaceAddress 
) [override]

void IncludeMulticastSource ( const IAddress groupAddress,
const IAddress interfaceAddress,
const IAddress sourceAddress 
) [override]

void ExcludeMulticastSource ( const IAddress groupAddress,
const IAddress interfaceAddress,
const IAddress sourceAddress 
) [override]

void SetMulticastSendInterface ( const IAddress interfaceAddress,
TimeToLive  multicastTTL = 1,
bool  enableLoopback = false 
) [override]

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]

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]

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 OnAttach (  )  [inline, protected, virtual, inherited]

Reimplemented in CSequencedStreamSocket, and CStreamSocket.

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

Reimplemented in CStreamSocket.

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

Reimplemented in CSequencedStreamSocket.

void IncrementReferenceCountFromZero (  )  [inline, protected, 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:06 2021 for The Server Framework - v7.4 by doxygen 1.5.3