73 lines
1.8 KiB
C++
73 lines
1.8 KiB
C++
|
//---------------------------------------------------------------------------
|
||
|
//
|
||
|
// Microsoft Windows
|
||
|
// Copyright (C) Microsoft Corporation, 1996 - 1997
|
||
|
//
|
||
|
// File: svrcache.cxx
|
||
|
//
|
||
|
// Contents: Caching code for com interface pointer and schema pointer
|
||
|
//
|
||
|
// History: 28-Apr-97 SophiaC Created.
|
||
|
//
|
||
|
//----------------------------------------------------------------------------
|
||
|
#include <iis.hxx>
|
||
|
|
||
|
BOOL SERVER_CACHE::Insert(SERVER_CACHE_ITEM * item)
|
||
|
// returns TRUE if succeed
|
||
|
{
|
||
|
ASSERT(NULL != item);
|
||
|
CLock lock;
|
||
|
#ifdef DBG
|
||
|
SERVER_CACHE_ITEM * item2;
|
||
|
Cache.Reset();
|
||
|
while (NULL != (item2 = Cache.Next()))
|
||
|
{
|
||
|
if ((0 == _wcsicmp(item->ServerName, item2->ServerName)) &&
|
||
|
(item->dwThreadId == item2->dwThreadId))
|
||
|
{
|
||
|
ASSERT(!"item already exists");
|
||
|
}
|
||
|
}
|
||
|
#endif
|
||
|
item->key = Cache.Insert(item);
|
||
|
return item->key != -1;
|
||
|
}
|
||
|
|
||
|
SERVER_CACHE_ITEM * SERVER_CACHE::Delete(LPWSTR ServerName, DWORD dwThreadId)
|
||
|
// returns item found
|
||
|
{
|
||
|
SERVER_CACHE_ITEM * item;
|
||
|
CLock lock;
|
||
|
Cache.Reset();
|
||
|
while (NULL != (item = Cache.Next()))
|
||
|
{
|
||
|
if ((0 == _wcsicmp(ServerName, item->ServerName)) &&
|
||
|
(dwThreadId == item->dwThreadId))
|
||
|
{
|
||
|
Cache.Delete(item->key);
|
||
|
if (item->ServerName) {
|
||
|
delete item->ServerName;
|
||
|
}
|
||
|
return item;
|
||
|
}
|
||
|
}
|
||
|
return NULL;
|
||
|
}
|
||
|
|
||
|
SERVER_CACHE_ITEM * SERVER_CACHE::Find(LPWSTR ServerName, DWORD dwThreadId)
|
||
|
// returns pointer to the item found
|
||
|
{
|
||
|
SERVER_CACHE_ITEM * item;
|
||
|
CLock lock;
|
||
|
Cache.Reset();
|
||
|
while (NULL != (item = Cache.Next()))
|
||
|
{
|
||
|
if ((0 == _wcsicmp(ServerName, item->ServerName)) &&
|
||
|
(dwThreadId == item->dwThreadId))
|
||
|
{
|
||
|
return item;
|
||
|
}
|
||
|
}
|
||
|
return NULL;
|
||
|
}
|