mirror of https://github.com/tongzx/nt5src
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
160 lines
4.1 KiB
160 lines
4.1 KiB
/*++
|
|
|
|
Copyright (c) 1995 Microsoft Corporation
|
|
|
|
Module Name :
|
|
|
|
xportcon.hxx
|
|
|
|
Abstract:
|
|
|
|
This module declares the class XPORT_CONNECTIONS. This class
|
|
encapsulates communication information objects, one for each
|
|
of the transports on which a connection is established by a service.
|
|
|
|
Author:
|
|
|
|
Murali R. Krishnan ( MuraliK ) 08-March-1995
|
|
|
|
Environment:
|
|
|
|
Win32 -- User Mode
|
|
|
|
Project:
|
|
|
|
Internet Services Common Module
|
|
|
|
Revision History:
|
|
|
|
--*/
|
|
|
|
# ifndef _XPORTCON_HXX_
|
|
# define _XPORTCON_HXX_
|
|
|
|
/************************************************************
|
|
* Include Headers
|
|
************************************************************/
|
|
|
|
# include <winsock.h>
|
|
# include <nspapi.h>
|
|
# include <atq.h>
|
|
|
|
//
|
|
// Type of callback function to be called when a new connection is established.
|
|
// This function should be defined before including conninfo.hxx
|
|
//
|
|
|
|
typedef
|
|
VOID
|
|
( * PFN_CONNECT_CALLBACK) ( IN SOCKET sNew,
|
|
IN LPSOCKADDR_IN psockAddr);
|
|
|
|
|
|
// # include "conninfo.hxx" <------- defines TS_CONNECTION_INFO
|
|
|
|
//
|
|
// Use a Forward declaration
|
|
//
|
|
|
|
class TS_CONNECTION_INFO_BASE;
|
|
|
|
/************************************************************
|
|
* Type Definitions
|
|
************************************************************/
|
|
|
|
|
|
/*++
|
|
|
|
class TS_XPORT_CONNECTIONS
|
|
|
|
This class encapsulates the connection information objects.
|
|
One connection information object is created per transport supported.
|
|
Each connection information object keeps maintains a socket
|
|
for the transport it is bound. It also has a dedicated thread for
|
|
accepting new connections and dispatching the same to the client
|
|
call back function.
|
|
Each service typically needs to provide a single call back function.
|
|
( sockets provide a layer of transparency beyond the point of connection)
|
|
|
|
Data:
|
|
m_nXports count of transports supported.
|
|
m_ppConnectionInfo pointer to an array of pointers to
|
|
TS_CONNECTION_INFO objects, one each
|
|
for each of the transport.
|
|
--*/
|
|
|
|
class TS_XPORT_CONNECTIONS {
|
|
|
|
public:
|
|
|
|
dllexp TS_XPORT_CONNECTIONS( VOID)
|
|
: m_ppConnectionInfo( NULL),
|
|
m_nXports ( 0)
|
|
{}
|
|
|
|
dllexp ~TS_XPORT_CONNECTIONS( VOID)
|
|
{ Cleanup(); }
|
|
|
|
dllexp DWORD
|
|
QueryNumTransports( VOID) const { return ( m_nXports); }
|
|
|
|
dllexp const TS_CONNECTION_INFO_BASE *
|
|
QueryXportConnection( DWORD i) const
|
|
{
|
|
return ( m_ppConnectionInfo != NULL && ( i < m_nXports) ?
|
|
m_ppConnectionInfo[ i] : NULL);
|
|
} // QueryXportConnection()
|
|
|
|
dllexp const TS_CONNECTION_INFO_BASE *
|
|
operator [] ( DWORD i) const { return ( QueryXportConnection( i)); }
|
|
|
|
|
|
dllexp BOOL
|
|
EstablishListenConnections(
|
|
IN CONST TCHAR * pszServiceName,
|
|
IN PCSADDR_INFO pcsAddrInfo,
|
|
IN DWORD nAddresses,
|
|
OUT LPDWORD lpdwNumEstablished,
|
|
IN DWORD nListenBacklog,
|
|
IN BOOL fUseAcceptEx );
|
|
|
|
dllexp BOOL
|
|
GetListenSockets(
|
|
IN OUT SOCKET * pSockets,
|
|
IN OUT LPDWORD pnSocketsMax) const;
|
|
|
|
dllexp BOOL
|
|
StartListenPumps( IN PFN_CONNECT_CALLBACK pfnConnectCallback,
|
|
IN ATQ_COMPLETION pfnConnectCallbackEx,
|
|
IN ATQ_COMPLETION pfnIOCompletion,
|
|
IN DWORD cbAcceptExReceiveBuffer,
|
|
IN const CHAR * pszRegParamKey,
|
|
OUT LPDWORD lpdwNumStarted) const;
|
|
|
|
dllexp BOOL
|
|
StopListenPumps( VOID) const;
|
|
|
|
dllexp BOOL Cleanup( VOID);
|
|
|
|
# if DBG
|
|
|
|
VOID Print( VOID) const;
|
|
# endif // DBG
|
|
|
|
|
|
private:
|
|
|
|
// array of ptrs to TsConnectionInfo
|
|
TS_CONNECTION_INFO_BASE ** m_ppConnectionInfo;
|
|
DWORD m_nXports; // number of different transports supported.
|
|
|
|
}; // class TS_XPORT_CONNECTIONS
|
|
|
|
typedef TS_XPORT_CONNECTIONS * PTS_XPORT_CONNECTIONS;
|
|
|
|
|
|
# endif // _XPORTCON_HXX_
|
|
|
|
/************************ End of File ***********************/
|
|
|
|
|