117 lines
2.2 KiB
C
117 lines
2.2 KiB
C
|
#ifndef _METHODHASH_HXX_
|
||
|
#define _METHODHASH_HXX_
|
||
|
|
||
|
class METHOD_HASH
|
||
|
: public CTypedHashTable< METHOD_HASH,
|
||
|
HEADER_RECORD,
|
||
|
CHAR * >
|
||
|
{
|
||
|
public:
|
||
|
METHOD_HASH()
|
||
|
: CTypedHashTable< METHOD_HASH,
|
||
|
HEADER_RECORD,
|
||
|
CHAR * >
|
||
|
("METHOD_HASH")
|
||
|
{
|
||
|
}
|
||
|
|
||
|
static
|
||
|
CHAR *
|
||
|
ExtractKey(
|
||
|
const HEADER_RECORD * pRecord
|
||
|
)
|
||
|
{
|
||
|
DBG_ASSERT( pRecord != NULL );
|
||
|
return pRecord->_pszName;
|
||
|
}
|
||
|
|
||
|
static
|
||
|
DWORD
|
||
|
CalcKeyHash(
|
||
|
CHAR * pszKey
|
||
|
)
|
||
|
{
|
||
|
return Hash( pszKey );
|
||
|
}
|
||
|
|
||
|
static
|
||
|
bool
|
||
|
EqualKeys(
|
||
|
CHAR * pszKey1,
|
||
|
CHAR * pszKey2
|
||
|
)
|
||
|
{
|
||
|
return strcmp( pszKey1, pszKey2 ) == 0;
|
||
|
}
|
||
|
|
||
|
static
|
||
|
void
|
||
|
AddRefRecord(
|
||
|
HEADER_RECORD * pEntry,
|
||
|
int nIncr
|
||
|
)
|
||
|
{
|
||
|
}
|
||
|
|
||
|
static
|
||
|
HRESULT
|
||
|
Initialize(
|
||
|
VOID
|
||
|
);
|
||
|
|
||
|
static
|
||
|
VOID
|
||
|
Terminate(
|
||
|
VOID
|
||
|
);
|
||
|
|
||
|
static
|
||
|
ULONG
|
||
|
GetIndex(
|
||
|
CHAR * pszName
|
||
|
)
|
||
|
{
|
||
|
HEADER_RECORD * pRecord = NULL;
|
||
|
LK_RETCODE retCode;
|
||
|
HRESULT hr;
|
||
|
|
||
|
retCode = sm_pMethodHash->FindKey( pszName,
|
||
|
&pRecord );
|
||
|
if ( retCode == LK_SUCCESS )
|
||
|
{
|
||
|
DBG_ASSERT( pRecord != NULL );
|
||
|
return pRecord->_ulHeaderIndex;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
return HttpVerbUnknown;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
static
|
||
|
CHAR *
|
||
|
GetString(
|
||
|
ULONG ulIndex,
|
||
|
USHORT * pcchLength
|
||
|
)
|
||
|
{
|
||
|
for (DWORD i = 0; sm_rgMethods[i]._pszName != NULL; i++)
|
||
|
{
|
||
|
if (ulIndex == sm_rgMethods[i]._ulHeaderIndex)
|
||
|
{
|
||
|
*pcchLength = sm_rgMethods[i]._cchName;
|
||
|
return sm_rgMethods[i]._pszName;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return NULL;
|
||
|
}
|
||
|
|
||
|
private:
|
||
|
|
||
|
static METHOD_HASH *sm_pMethodHash;
|
||
|
static HEADER_RECORD sm_rgMethods[];
|
||
|
};
|
||
|
|
||
|
#endif
|