254 lines
		
	
	
		
			7.0 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			254 lines
		
	
	
		
			7.0 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| /*==========================================================================
 | |
|  *
 | |
|  *  Copyright (C) 1998-2000 Microsoft Corporation.  All Rights Reserved.
 | |
|  *
 | |
|  *  File:       CmdData.cpp
 | |
|  *  Content:	Class representing a command
 | |
|  *
 | |
|  *
 | |
|  *  History:
 | |
|  *   Date		By		Reason
 | |
|  *   ====		==		======
 | |
|  *	04/07/1999	jtk		Derived from SPData.h
 | |
|  *	01/19/2000	jtk		Derived from CommandData.h
 | |
|  ***************************************************************************/
 | |
| 
 | |
| #include "dnwsocki.h"
 | |
| 
 | |
| 
 | |
| #undef DPF_SUBCOMP
 | |
| #define DPF_SUBCOMP DN_SUBCOMP_WSOCK
 | |
| 
 | |
| //**********************************************************************
 | |
| // Constant definitions
 | |
| //**********************************************************************
 | |
| 
 | |
| //**********************************************************************
 | |
| // Macro definitions
 | |
| //**********************************************************************
 | |
| 
 | |
| //**********************************************************************
 | |
| // Structure definitions
 | |
| //**********************************************************************
 | |
| 
 | |
| //**********************************************************************
 | |
| // Variable definitions
 | |
| //**********************************************************************
 | |
| 
 | |
| //**********************************************************************
 | |
| // Function prototypes
 | |
| //**********************************************************************
 | |
| 
 | |
| //**********************************************************************
 | |
| // Class definitions
 | |
| //**********************************************************************
 | |
| 
 | |
| 
 | |
| //**********************************************************************
 | |
| // ------------------------------
 | |
| // CCommandData::CCommandData - constructor
 | |
| //
 | |
| // Entry:		Nothing
 | |
| //
 | |
| // Exit:		Nothing
 | |
| // ------------------------------
 | |
| #undef DPF_MODNAME
 | |
| #define DPF_MODNAME "CCommandData::CCommandData"
 | |
| 
 | |
| CCommandData::CCommandData():
 | |
| 	m_State( COMMAND_STATE_UNKNOWN ),
 | |
| 	m_dwDescriptor( NULL_DESCRIPTOR ),
 | |
| 	m_dwNextDescriptor( NULL_DESCRIPTOR + 1 ),
 | |
| 	m_Type( COMMAND_TYPE_UNKNOWN ),
 | |
| 	m_pEndpoint( NULL ),
 | |
| #ifdef USE_THREADLOCALPOOLS
 | |
| 	m_pUserContext( NULL )
 | |
| #else // ! USE_THREADLOCALPOOLS
 | |
| 	m_pUserContext( NULL ),
 | |
| 	m_pOwningPool( NULL )
 | |
| #endif // ! USE_THREADLOCALPOOLS
 | |
| {
 | |
| 	m_blPostponed.Initialize();
 | |
| }
 | |
| //**********************************************************************
 | |
| 
 | |
| 
 | |
| //**********************************************************************
 | |
| // ------------------------------
 | |
| // CCommandData::CCommandData - destructor
 | |
| //
 | |
| // Entry:		Nothing
 | |
| //
 | |
| // Exit:		Nothing
 | |
| // ------------------------------
 | |
| #undef DPF_MODNAME
 | |
| #define DPF_MODNAME "CCommandData::~CCommandData"
 | |
| 
 | |
| CCommandData::~CCommandData()
 | |
| {
 | |
| 	DNASSERT( m_State == COMMAND_STATE_UNKNOWN );
 | |
| 	DNASSERT( m_dwDescriptor == NULL_DESCRIPTOR );
 | |
| 	DNASSERT( m_Type == COMMAND_TYPE_UNKNOWN );
 | |
| 	DNASSERT( m_pEndpoint == NULL );
 | |
| 	DNASSERT( m_pUserContext == NULL );
 | |
| 	DNASSERT( m_blPostponed.IsEmpty() );
 | |
| #ifndef USE_THREADLOCALPOOLS
 | |
| 	DNASSERT( m_pOwningPool == NULL );
 | |
| #endif // ! USE_THREADLOCALPOOLS
 | |
| }
 | |
| //**********************************************************************
 | |
| 
 | |
| 
 | |
| //**********************************************************************
 | |
| // ------------------------------
 | |
| // CCommandData::Reset - reset this object
 | |
| //
 | |
| // Entry:		Nothing
 | |
| //
 | |
| // Exit:		Nothing
 | |
| // ------------------------------
 | |
| #undef DPF_MODNAME
 | |
| #define DPF_MODNAME "CCommandData::Reset"
 | |
| 
 | |
| void	CCommandData::Reset( void )
 | |
| {
 | |
| 	SetState( COMMAND_STATE_UNKNOWN );
 | |
| 	m_dwDescriptor = NULL_DESCRIPTOR;
 | |
| 	SetType( COMMAND_TYPE_UNKNOWN );
 | |
| 	SetEndpoint( NULL );
 | |
| 	SetUserContext( NULL );
 | |
| }
 | |
| //**********************************************************************
 | |
| 
 | |
| 
 | |
| //**********************************************************************
 | |
| // ------------------------------
 | |
| // CCommandData::PoolAllocFunction - called when a pool item is allocated
 | |
| //
 | |
| // Entry:		Nothing
 | |
| //
 | |
| // Exit:		Boolean indicating success
 | |
| //				TRUE = success
 | |
| //				FALSE = failure
 | |
| // ------------------------------
 | |
| #undef DPF_MODNAME
 | |
| #define DPF_MODNAME "CCommandData::PoolAllocFunction"
 | |
| 
 | |
| BOOL	CCommandData::PoolAllocFunction( void )
 | |
| {
 | |
| 	BOOL	fReturn;
 | |
| 
 | |
| 
 | |
| 	//
 | |
| 	// initialize
 | |
| 	//
 | |
| 	fReturn = TRUE;
 | |
| 
 | |
| 	DNASSERT( m_State == COMMAND_STATE_UNKNOWN );
 | |
| 	DNASSERT( m_dwDescriptor == NULL_DESCRIPTOR );
 | |
| 	DNASSERT( m_Type == COMMAND_TYPE_UNKNOWN );
 | |
| 	DNASSERT( m_pEndpoint == NULL );
 | |
| 	DNASSERT( m_pUserContext == NULL );
 | |
| 	
 | |
| 	//
 | |
| 	// initialize critical section and set recursin depth to 0
 | |
| 	//
 | |
| 	if ( DNInitializeCriticalSection( &m_Lock ) == FALSE )
 | |
| 	{
 | |
| 		fReturn = FALSE;
 | |
| 		goto Failure;
 | |
| 	}
 | |
| 	DebugSetCriticalSectionRecursionCount( &m_Lock, 0 );
 | |
| 
 | |
| Exit:
 | |
| 	return	fReturn;
 | |
| 
 | |
| Failure:
 | |
| 	goto Exit;
 | |
| }
 | |
| //**********************************************************************
 | |
| 
 | |
| 
 | |
| //**********************************************************************
 | |
| // ------------------------------
 | |
| // CCommandData::PoolInitFunction - called when a pool item is allocated
 | |
| //
 | |
| // Entry:		Nothing
 | |
| //
 | |
| // Exit:		Boolean indicating success
 | |
| //				TRUE = success
 | |
| //				FALSE = failure
 | |
| // ------------------------------
 | |
| #undef DPF_MODNAME
 | |
| #define DPF_MODNAME "CCommandData::PoolInitFunction"
 | |
| 
 | |
| BOOL	CCommandData::PoolInitFunction( void )
 | |
| {
 | |
| 	DNASSERT( m_State == COMMAND_STATE_UNKNOWN );
 | |
| 	DNASSERT( m_dwDescriptor == NULL_DESCRIPTOR );
 | |
| 	DNASSERT( m_Type == COMMAND_TYPE_UNKNOWN );
 | |
| 	DNASSERT( m_pEndpoint == NULL );
 | |
| 	DNASSERT( m_pUserContext == NULL );
 | |
| 	
 | |
| 	SetDescriptor();
 | |
| 	
 | |
| 	return	TRUE;
 | |
| }
 | |
| //**********************************************************************
 | |
| 
 | |
| 
 | |
| //**********************************************************************
 | |
| // ------------------------------
 | |
| // CCommandData::PoolReleaseFunction - called when item is returned to the pool
 | |
| //
 | |
| // Entry:		Nothing
 | |
| //
 | |
| // Exit:		Nothing
 | |
| // ------------------------------
 | |
| #undef DPF_MODNAME
 | |
| #define DPF_MODNAME "CCommandData::PoolReleaseFunction"
 | |
| 
 | |
| void	CCommandData::PoolReleaseFunction( void )
 | |
| {
 | |
| 	Reset();
 | |
| }
 | |
| //**********************************************************************
 | |
| 
 | |
| 
 | |
| //**********************************************************************
 | |
| // ------------------------------
 | |
| // CCommandData::Denitialize - deinitialization function for command data
 | |
| //
 | |
| // Entry:		Nothing
 | |
| //
 | |
| // Exit:		Nothing
 | |
| // ------------------------------
 | |
| #undef DPF_MODNAME
 | |
| #define DPF_MODNAME "CCommandData::PoolDeallocFunction"
 | |
| 
 | |
| void	CCommandData::PoolDeallocFunction( void )
 | |
| {
 | |
| 	DNDeleteCriticalSection( &m_Lock );
 | |
| 	m_State = COMMAND_STATE_UNKNOWN;
 | |
| }
 | |
| //**********************************************************************
 | |
| 
 | |
| 
 | |
| //**********************************************************************
 | |
| // ------------------------------
 | |
| // CCommandData::ReturnSelfToPool - return this item to a pool
 | |
| //
 | |
| // Entry:		Nothing
 | |
| //
 | |
| // Exit:		Nothing
 | |
| // ------------------------------
 | |
| #undef DPF_MODNAME
 | |
| #define DPF_MODNAME "CCommandData::ReturnSelfToPool"
 | |
| 
 | |
| void	CCommandData::ReturnSelfToPool( void )
 | |
| {
 | |
| 	ReturnCommand( this );
 | |
| }
 | |
| //**********************************************************************
 | |
| 
 |