Public Types | |
typedef unsigned long | DataLength |
Public Member Functions | |
TDatagramSocketConnectionManager (IDatagramSocketConnectionManagerCallback &callback, JetByteTools::IO::IIOPool &pool, IAllocateDatagramSockets &socketAllocator, JetByteTools::IO::IAllocateBuffers &allocator, ILimitConnections &connectionLimiter=CConnectionLimiter::NoLimitLimiter) | |
Construct a connection manager with the supplied callback interface, I/O pool, and allocators. | |
TDatagramSocketConnectionManager (const TDatagramSocketConnectionManager &rhs) | |
virtual | ~TDatagramSocketConnectionManager () |
TDatagramSocketConnectionManager & | operator= (const TDatagramSocketConnectionManager &rhs) |
CSmartDatagramSocket | Bind (const IFullAddress &address, SocketBufferSize recvBufferSize=DefaultSocketBufferSize, SocketBufferSize sendBufferSize=DefaultSocketBufferSize) |
Creates a datagram socket and binds it to the supplied address. | |
CSmartDatagramSocket | TryBind (const IFullAddress &address, SocketBufferSize recvBufferSize=DefaultSocketBufferSize, SocketBufferSize sendBufferSize=DefaultSocketBufferSize) |
Attempts to create a datagram socket and bind it to the supplied address. | |
void | SendTo (const IFullAddress &address, const char *pData, DataLength dataLength) |
Creates a datagram socket and issues a SendTo() of the data to the supplied address. Note that the socket is not bound to a local address until the SendTo() takes place which is why you don't get a socket returned to you from this call. | |
void | SendTo (const IFullAddress &address, const BYTE *pData, DataLength dataLength) |
Creates a datagram socket and issues a SendTo() of the data to the supplied address. Note that the socket is not bound to a local address until the SendTo() takes place which is why you don't get a socket returned to you from this call. | |
void | SendTo (const IFullAddress &address, JetByteTools::IO::CSmartBuffer &buffer) |
Creates a datagram socket and issues a SendTo() of the data to the supplied address. Note that the socket is not bound to a local address until the SendTo() takes place which is why you don't get a socket returned to you from this call. | |
bool | TrySendTo (const IFullAddress &address, const char *pData, DataLength dataLength) |
Creates a datagram socket and issues a SendTo() of the data to the supplied address. Note that the socket is not bound to a local address until the SendTo() takes place which is why you don't get a socket returned to you from this call. | |
bool | TrySendTo (const IFullAddress &address, const BYTE *pData, DataLength dataLength) |
Creates a datagram socket and issues a SendTo() of the data to the supplied address. Note that the socket is not bound to a local address until the SendTo() takes place which is why you don't get a socket returned to you from this call. | |
bool | TrySendTo (const IFullAddress &address, JetByteTools::IO::CSmartBuffer &buffer) |
Creates a datagram socket and issues a SendTo() of the data to the supplied address. Note that the socket is not bound to a local address until the SendTo() takes place which is why you don't get a socket returned to you from this call. | |
CSmartDatagramSocket | Connect (const IFullAddress &address, const void *pUserData=nullptr, SocketBufferSize recvBufferSize=DefaultSocketBufferSize, SocketBufferSize sendBufferSize=DefaultSocketBufferSize) |
Connects, synchronously, to the specified address and returns a smart pointer to the resulting datagram socket. Throws exceptions on failure to connect, the resulting datagram socket is always connected and valid. Passes the user data pointer through to IDatagramSocketConnectionManagerCallback::OnPreOutgoingConnect() before returning. Calls IDatagramSocketConnectionManagerCallback::OnConnectionEstablished(), before returning, if the connection is successful. | |
CSmartDatagramSocket | ConnectNoThrow (const IFullAddress &address, const void *pUserData=nullptr, SocketBufferSize recvBufferSize=DefaultSocketBufferSize, SocketBufferSize sendBufferSize=DefaultSocketBufferSize) |
Connects, synchronously, to the specified address and returns a smart pointer to the resulting datagram socket. Does not throw exceptions, the smart datagram pointer will be null if the connection attempt fails; call CSmartDatagramSocket::Get() to determine this. Passes the user data pointer through to IDatagramSocketConnectionManagerCallback::OnPreOutgoingConnect() before returning. Calls IDatagramSocketConnectionManagerCallback::OnOutgoingConnectionFailed(), before returning, if the connection fails and IDatagramSocketConnectionManagerCallback::OnConnectionEstablished(), before returning, if the connection is successful. | |
DWORD | AbortAllConnections () |
Aborts all active sockets that are managed by the supplied manager and returns the number of active sockets that were aborted. | |
virtual void | BeginShutdown () |
Starts the shutdown process and returns immediately. | |
virtual void | WaitForShutdownToComplete () |
Initiates a shutdown (if one isn't already in progresss) and then waits for it to complete. Does not return until the shutdown has completed. | |
virtual bool | WaitForShutdownToComplete (Milliseconds timeout) |
Initiates a shutdown (if one isn't already in progresss) and then waits for the supplied number of milliseconds for it to complete. Returns true if the shutdown completed successfully before the timeout expired and false if it didn't. | |
virtual void | ForceShutdown () |
Force a shutdown to occur, this is DANGEROUS to use as it can result in a shutdown of this object, and its potential destruction, whilst there are sockets alive that may call back into this object. Use with care! | |
Protected Member Functions | |
CSmartDatagramSocket | Connect (const IFullAddress &address, const void *pUserData, const void *pFilterData, SocketBufferSize recvBufferSize, SocketBufferSize sendBufferSize) |
CSmartDatagramSocket | ConnectNoThrow (const IFullAddress &address, const void *pUserData, const void *pFilterData, SocketBufferSize recvBufferSize, SocketBufferSize sendBufferSize) |
SOCKET | CreateSocket (const IAddressType &addressType, SocketBufferSize recvBufferSize=DefaultSocketBufferSize, SocketBufferSize sendBufferSize=DefaultSocketBufferSize) |
void | OnConnectionReset (IDatagramSocketEx &socket, DWORD lastError) |
void | OnConnectionClosed (IDatagramSocketEx &socket, ConnectionClosureReason reason) |
void | RequestRead (IDatagramSocketEx &socket, JetByteTools::IO::CSmartBuffer &buffer) override |
void | RequestRecvFrom (IDatagramSocketEx &socket, JetByteTools::IO::CSmartBuffer &buffer) override |
void | RequestWrite (IDatagramSocketEx &socket, JetByteTools::IO::CSmartBuffer &buffer) override |
void | RequestSendTo (IDatagramSocketEx &socket, const IAddress &address, JetByteTools::IO::CSmartBuffer &buffer) override |
void | RequestCancelIO (IDatagramSocketEx &socket) override |
virtual CSmartDatagramSocketEx | AllocateSocket (SOCKET theSocket) |
void | HandleOperation (IDatagramSocketEx &socket, JetByteTools::IO::CSmartBuffer &buffer, DWORD ioSize, DWORD lastError) override |
DWORD | AbortAllConnections (ConnectionClosureReason reason) |
bool | ShutdownIsInProgress () const |
virtual void | Start () |
void | EnsureCanConnectNow () |
bool | CheckCanConnectNow () |
void | AssociateDevice (SOCKET s, JetByteTools::IO::IHandler &handler) const |
JetByteTools::IO::CSmartBuffer | AllocateBuffer () override |
JetByteTools::IO::CSmartBuffer | AllocateBuffer (JetByteTools::IO::IPoolBuffers &pool) override |
JetByteTools::IO::CSmartBuffer | AllocateCustomSizedBuffer (JetByteTools::IO::IBuffer::BufferSize bufferSize) override |
void | IncrementActiveConnections () |
void | DecrementActiveConnections () |
virtual void | ReleaseSocket (IPoolableSocket &socket, bool wasUserSocket) override |
virtual void | ShutdownComplete () |
void | SetBufferSize (SOCKET s, SocketBufferSize bufferSize, int optionName) const |
bool | ConnectEx (SOCKET s, const struct sockaddr FAR *name, int namelen, PVOID lpSendBuffer, DWORD dwSendDataLength, LPDWORD lpdwBytesSent, LPOVERLAPPED lpOverlapped) const |
Loads, if necessary and available, and then calls ConnectEx(). If the function isn't available then an exception is thrown. | |
bool | LoadConnectEx (SOCKET s) const |
Attempts to load ConnectEx() via a call to WSAIoctl(). Returns true if successful. | |
bool | AcceptEx (SOCKET listenSocket, SOCKET acceptSocket, PVOID pOutputBuffer, DWORD receiveDataLength, DWORD localAddressLength, DWORD remoteAddressLength, LPDWORD bytesReceived, LPOVERLAPPED pOverlapped) const |
Loads, if necessary and available, and then calls AcceptEx(). If the function isn't available then an exception is thrown. | |
bool | LoadAcceptEx (SOCKET s) const |
Attempts to load AcceptEx() via a call to WSAIoctl(). Returns true if successful. | |
void | GetAcceptExSockaddrs (PVOID pOutputBuffer, DWORD receiveDataLength, DWORD localAddressLength, DWORD remoteAddressLength, LPSOCKADDR *pLocalSockaddr, LPINT pLocalSockaddrLength, LPSOCKADDR *pRemoteSockaddr, LPINT pRemoteSockaddrLength) const |
Loads, if necessary and available, and then calls GetAcceptExSockaddrs(). If the function isn't available then an exception is thrown. | |
bool | LoadGetAcceptExSockaddrs (SOCKET s) const |
Attempts to load GetAcceptExSockaddrs() via a call to WSAIoctl(). Returns true if successful. | |
bool | DisconnectEx (SOCKET s, LPOVERLAPPED pOverlapped, DWORD flags) const |
Loads, if necessary and available, and then calls DisconnectEx(). If the function isn't available then an exception is thrown. | |
bool | LoadDisconnectEx (SOCKET s) const |
Attempts to load DisconnectEx() via a call to WSAIoctl(). Returns true if successful. | |
bool | TransmitFile (SOCKET s, HANDLE fileToTransmit, DWORD numberOfBytesToWrite, DWORD numberOfBytesPerSend, LPOVERLAPPED lOverlapped, LPTRANSMIT_FILE_BUFFERS lTransmitBuffers, DWORD flags) const |
Loads, if necessary and available, and then calls TransmitFile(). If the function isn't available then an exception is thrown. | |
bool | LoadTransmitFile (SOCKET s) const |
Attempts to load TransmitFile() via a call to WSAIoctl(). Returns true if successful. | |
bool | DisconnectSocketForReuse (SOCKET s) const |
Attempts to disconnect a socket for reuse first by attempting to call DisconnectEx() and then by attempting to call TransmitFile() in 'disconnect for reuse mode' see http://msdn2.microsoft.com/en-us/library/ms740565.aspx for details. If neither option is available then an exception is thrown. | |
bool | CanDisconnectSocketForReuse (SOCKET s) const |
Returns true if either DisconnectEx() or TransmitFile() can be a call to WSAIoctl(). | |
int | WSARecvMsg (SOCKET s, LPWSAMSG lpMsg, LPDWORD lpdwNumberOfBytesRecvd, LPWSAOVERLAPPED lpOverlapped, LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine) const |
Loads, if necessary and available, and then calls WSARecvMsg(). If the function isn't available then an exception is thrown. | |
bool | LoadWSARecvMsg (SOCKET s) const |
Attempts to load WSARecvMsg() via a call to WSAIoctl(). Returns true if successful. | |
void | EnableDispatchOnThisThread (bool enable) |
Static Protected Member Functions | |
static bool | ShouldDispatchOnThisThread () |
static bool | ShouldDispatchForThisSocket (const void *pSocket) |
static const void * | EnableDispatchForThisSocket (const void *pSocket) |
static void | DisableDispatchForThisSocket (const void *pSocket) |
Protected Attributes | |
JetByteTools::IO::IIOPool & | m_pool |
SocketAllocator & | m_socketAllocator |
ILimitConnections & | m_connectionLimiter |
JetByteTools::Core::CManualResetEvent | m_noActiveConnectionsEvent |
JetByteTools::Core::CAtomicCounter | m_activeConnections |
const bool | m_canEnableSkipCompletionPortOnSuccess |
typedef unsigned long DataLength [inherited] |
TDatagramSocketConnectionManager | ( | IDatagramSocketConnectionManagerCallback & | callback, | |
JetByteTools::IO::IIOPool & | pool, | |||
IAllocateDatagramSockets & | socketAllocator, | |||
JetByteTools::IO::IAllocateBuffers & | allocator, | |||
ILimitConnections & | connectionLimiter = CConnectionLimiter::NoLimitLimiter | |||
) | [inline] |
Construct a connection manager with the supplied callback interface, I/O pool, and allocators.
TDatagramSocketConnectionManager | ( | const TDatagramSocketConnectionManager< Base > & | rhs | ) |
~TDatagramSocketConnectionManager | ( | ) | [inline, virtual] |
TDatagramSocketConnectionManager& operator= | ( | const TDatagramSocketConnectionManager< Base > & | rhs | ) |
CSmartDatagramSocket Bind | ( | const IFullAddress & | address, | |
SocketBufferSize | recvBufferSize = DefaultSocketBufferSize , |
|||
SocketBufferSize | sendBufferSize = DefaultSocketBufferSize | |||
) | [inline] |
Creates a datagram socket and binds it to the supplied address.
CSmartDatagramSocket TryBind | ( | const IFullAddress & | address, | |
SocketBufferSize | recvBufferSize = DefaultSocketBufferSize , |
|||
SocketBufferSize | sendBufferSize = DefaultSocketBufferSize | |||
) | [inline] |
Attempts to create a datagram socket and bind it to the supplied address.
void SendTo | ( | const IFullAddress & | address, | |
const char * | pData, | |||
DataLength | dataLength | |||
) |
void SendTo | ( | const IFullAddress & | address, | |
const BYTE * | pData, | |||
DataLength | dataLength | |||
) |
void SendTo | ( | const IFullAddress & | address, | |
JetByteTools::IO::CSmartBuffer & | buffer | |||
) | [inline] |
bool TrySendTo | ( | const IFullAddress & | address, | |
const char * | pData, | |||
DataLength | dataLength | |||
) |
bool TrySendTo | ( | const IFullAddress & | address, | |
const BYTE * | pData, | |||
DataLength | dataLength | |||
) |
bool TrySendTo | ( | const IFullAddress & | address, | |
JetByteTools::IO::CSmartBuffer & | buffer | |||
) | [inline] |
CSmartDatagramSocket Connect | ( | const IFullAddress & | address, | |
const void * | pUserData = nullptr , |
|||
SocketBufferSize | recvBufferSize = DefaultSocketBufferSize , |
|||
SocketBufferSize | sendBufferSize = DefaultSocketBufferSize | |||
) | [inline] |
Connects, synchronously, to the specified address and returns a smart pointer to the resulting datagram socket. Throws exceptions on failure to connect, the resulting datagram socket is always connected and valid. Passes the user data pointer through to IDatagramSocketConnectionManagerCallback::OnPreOutgoingConnect() before returning. Calls IDatagramSocketConnectionManagerCallback::OnConnectionEstablished(), before returning, if the connection is successful.
CSmartDatagramSocket ConnectNoThrow | ( | const IFullAddress & | address, | |
const void * | pUserData = nullptr , |
|||
SocketBufferSize | recvBufferSize = DefaultSocketBufferSize , |
|||
SocketBufferSize | sendBufferSize = DefaultSocketBufferSize | |||
) | [inline] |
Connects, synchronously, to the specified address and returns a smart pointer to the resulting datagram socket. Does not throw exceptions, the smart datagram pointer will be null if the connection attempt fails; call CSmartDatagramSocket::Get() to determine this. Passes the user data pointer through to IDatagramSocketConnectionManagerCallback::OnPreOutgoingConnect() before returning. Calls IDatagramSocketConnectionManagerCallback::OnOutgoingConnectionFailed(), before returning, if the connection fails and IDatagramSocketConnectionManagerCallback::OnConnectionEstablished(), before returning, if the connection is successful.
CSmartDatagramSocket Connect | ( | const IFullAddress & | address, | |
const void * | pUserData, | |||
const void * | pFilterData, | |||
SocketBufferSize | recvBufferSize, | |||
SocketBufferSize | sendBufferSize | |||
) | [inline, protected] |
CSmartDatagramSocket ConnectNoThrow | ( | const IFullAddress & | address, | |
const void * | pUserData, | |||
const void * | pFilterData, | |||
SocketBufferSize | recvBufferSize, | |||
SocketBufferSize | sendBufferSize | |||
) | [inline, protected] |
SOCKET CreateSocket | ( | const IAddressType & | addressType, | |
SocketBufferSize | recvBufferSize = DefaultSocketBufferSize , |
|||
SocketBufferSize | sendBufferSize = DefaultSocketBufferSize | |||
) | [inline, protected] |
void OnConnectionReset | ( | IDatagramSocketEx & | socket, | |
DWORD | lastError | |||
) | [inline, protected] |
void OnConnectionClosed | ( | IDatagramSocketEx & | socket, | |
ConnectionClosureReason | reason | |||
) | [inline, protected] |
void RequestRead | ( | IDatagramSocketEx & | socket, | |
JetByteTools::IO::CSmartBuffer & | buffer | |||
) | [inline, override, protected] |
void RequestRecvFrom | ( | IDatagramSocketEx & | socket, | |
JetByteTools::IO::CSmartBuffer & | buffer | |||
) | [inline, override, protected] |
void RequestWrite | ( | IDatagramSocketEx & | socket, | |
JetByteTools::IO::CSmartBuffer & | buffer | |||
) | [inline, override, protected] |
void RequestSendTo | ( | IDatagramSocketEx & | socket, | |
const IAddress & | address, | |||
JetByteTools::IO::CSmartBuffer & | buffer | |||
) | [inline, override, protected] |
void RequestCancelIO | ( | IDatagramSocketEx & | socket | ) | [inline, override, protected] |
CSmartDatagramSocketEx AllocateSocket | ( | SOCKET | theSocket | ) | [inline, protected, virtual] |
void HandleOperation | ( | IDatagramSocketEx & | socket, | |
JetByteTools::IO::CSmartBuffer & | buffer, | |||
DWORD | ioSize, | |||
DWORD | lastError | |||
) | [inline, override, protected] |
DWORD AbortAllConnections | ( | ) | [inline, inherited] |
Aborts all active sockets that are managed by the supplied manager and returns the number of active sockets that were aborted.
DWORD AbortAllConnections | ( | ConnectionClosureReason | reason | ) | [inline, protected, inherited] |
void BeginShutdown | ( | ) | [inline, virtual, inherited] |
Starts the shutdown process and returns immediately.
Reimplemented in TDatagramSocketServer, and TStreamSocketServerEx< TStreamSocketConnectionManager< CFilteringStreamSocketConnectionManagerBase > >.
void WaitForShutdownToComplete | ( | ) | [inline, virtual, inherited] |
Initiates a shutdown (if one isn't already in progresss) and then waits for it to complete. Does not return until the shutdown has completed.
Reimplemented in TDatagramSocketServer, and TStreamSocketServerEx< TStreamSocketConnectionManager< CFilteringStreamSocketConnectionManagerBase > >.
bool WaitForShutdownToComplete | ( | Milliseconds | timeout | ) | [inline, virtual, inherited] |
Initiates a shutdown (if one isn't already in progresss) and then waits for the supplied number of milliseconds for it to complete. Returns true if the shutdown completed successfully before the timeout expired and false if it didn't.
Reimplemented in TDatagramSocketServer, and TStreamSocketServerEx< TStreamSocketConnectionManager< CFilteringStreamSocketConnectionManagerBase > >.
void ForceShutdown | ( | ) | [inline, virtual, inherited] |
Force a shutdown to occur, this is DANGEROUS to use as it can result in a shutdown of this object, and its potential destruction, whilst there are sockets alive that may call back into this object. Use with care!
Reimplemented in TDatagramSocketServer, and TStreamSocketServerEx< TStreamSocketConnectionManager< CFilteringStreamSocketConnectionManagerBase > >.
bool ShutdownIsInProgress | ( | ) | const [inline, protected, inherited] |
void Start | ( | ) | [inline, protected, virtual, inherited] |
void EnsureCanConnectNow | ( | ) | [inline, protected, inherited] |
bool CheckCanConnectNow | ( | ) | [inline, protected, inherited] |
void AssociateDevice | ( | SOCKET | s, | |
JetByteTools::IO::IHandler & | handler | |||
) | const [inline, protected, inherited] |
JetByteTools::IO::CSmartBuffer AllocateBuffer | ( | ) | [inline, override, protected, inherited] |
JetByteTools::IO::CSmartBuffer AllocateBuffer | ( | JetByteTools::IO::IPoolBuffers & | pool | ) | [inline, override, protected, inherited] |
JetByteTools::IO::CSmartBuffer AllocateCustomSizedBuffer | ( | JetByteTools::IO::IBuffer::BufferSize | bufferSize | ) | [inline, override, protected, inherited] |
void IncrementActiveConnections | ( | ) | [inline, protected, inherited] |
void DecrementActiveConnections | ( | ) | [inline, protected, inherited] |
void ReleaseSocket | ( | IPoolableSocket & | socket, | |
bool | wasUserSocket | |||
) | [inline, override, protected, virtual, inherited] |
void ShutdownComplete | ( | ) | [inline, protected, virtual, inherited] |
void SetBufferSize | ( | SOCKET | s, | |
SocketBufferSize | bufferSize, | |||
int | optionName | |||
) | const [inline, protected, inherited] |
bool ConnectEx | ( | SOCKET | s, | |
const struct sockaddr FAR * | name, | |||
int | namelen, | |||
PVOID | lpSendBuffer, | |||
DWORD | dwSendDataLength, | |||
LPDWORD | lpdwBytesSent, | |||
LPOVERLAPPED | lpOverlapped | |||
) | const [inherited] |
Loads, if necessary and available, and then calls ConnectEx(). If the function isn't available then an exception is thrown.
Attempts to load ConnectEx() via a call to WSAIoctl(). Returns true if successful.
bool AcceptEx | ( | SOCKET | listenSocket, | |
SOCKET | acceptSocket, | |||
PVOID | pOutputBuffer, | |||
DWORD | receiveDataLength, | |||
DWORD | localAddressLength, | |||
DWORD | remoteAddressLength, | |||
LPDWORD | bytesReceived, | |||
LPOVERLAPPED | pOverlapped | |||
) | const [inherited] |
Loads, if necessary and available, and then calls AcceptEx(). If the function isn't available then an exception is thrown.
Attempts to load AcceptEx() via a call to WSAIoctl(). Returns true if successful.
void GetAcceptExSockaddrs | ( | PVOID | pOutputBuffer, | |
DWORD | receiveDataLength, | |||
DWORD | localAddressLength, | |||
DWORD | remoteAddressLength, | |||
LPSOCKADDR * | pLocalSockaddr, | |||
LPINT | pLocalSockaddrLength, | |||
LPSOCKADDR * | pRemoteSockaddr, | |||
LPINT | pRemoteSockaddrLength | |||
) | const [inherited] |
Loads, if necessary and available, and then calls GetAcceptExSockaddrs(). If the function isn't available then an exception is thrown.
Attempts to load GetAcceptExSockaddrs() via a call to WSAIoctl(). Returns true if successful.
bool DisconnectEx | ( | SOCKET | s, | |
LPOVERLAPPED | pOverlapped, | |||
DWORD | flags | |||
) | const [inherited] |
Loads, if necessary and available, and then calls DisconnectEx(). If the function isn't available then an exception is thrown.
Attempts to load DisconnectEx() via a call to WSAIoctl(). Returns true if successful.
bool TransmitFile | ( | SOCKET | s, | |
HANDLE | fileToTransmit, | |||
DWORD | numberOfBytesToWrite, | |||
DWORD | numberOfBytesPerSend, | |||
LPOVERLAPPED | lOverlapped, | |||
LPTRANSMIT_FILE_BUFFERS | lTransmitBuffers, | |||
DWORD | flags | |||
) | const [inherited] |
Loads, if necessary and available, and then calls TransmitFile(). If the function isn't available then an exception is thrown.
Attempts to load TransmitFile() via a call to WSAIoctl(). Returns true if successful.
Attempts to disconnect a socket for reuse first by attempting to call DisconnectEx() and then by attempting to call TransmitFile() in 'disconnect for reuse mode' see http://msdn2.microsoft.com/en-us/library/ms740565.aspx for details. If neither option is available then an exception is thrown.
Returns true if either DisconnectEx() or TransmitFile() can be a call to WSAIoctl().
int WSARecvMsg | ( | SOCKET | s, | |
LPWSAMSG | lpMsg, | |||
LPDWORD | lpdwNumberOfBytesRecvd, | |||
LPWSAOVERLAPPED | lpOverlapped, | |||
LPWSAOVERLAPPED_COMPLETION_ROUTINE | lpCompletionRoutine | |||
) | const [inherited] |
Loads, if necessary and available, and then calls WSARecvMsg(). If the function isn't available then an exception is thrown.
Attempts to load WSARecvMsg() via a call to WSAIoctl(). Returns true if successful.
bool ShouldDispatchOnThisThread | ( | ) | [static, inherited] |
bool ShouldDispatchForThisSocket | ( | const void * | pSocket | ) | [static, inherited] |
void EnableDispatchOnThisThread | ( | bool | enable | ) | [inherited] |
const void * EnableDispatchForThisSocket | ( | const void * | pSocket | ) | [static, inherited] |
void DisableDispatchForThisSocket | ( | const void * | pSocket | ) | [static, inherited] |
JetByteTools::IO::IIOPool& m_pool [protected, inherited] |
SocketAllocator& m_socketAllocator [protected, inherited] |
ILimitConnections& m_connectionLimiter [protected, inherited] |
JetByteTools::Core::CManualResetEvent m_noActiveConnectionsEvent [protected, inherited] |
JetByteTools::Core::CAtomicCounter m_activeConnections [protected, inherited] |
const bool m_canEnableSkipCompletionPortOnSuccess [protected, inherited] |