Hi again,

I think the problem is in the delete routine:

bool __fastcall ProxyCache::deleteFileFromRAMCacheWRTIndex(RAMFileCache
*bufferFileCache, bool alreadyMarkedAsToDelete)
{
 if(!bufferFileCache)
  return false;
 if(bufferFileCache->cacheTreeNode)
 {
  RAMFileCacheIndex->Remove(bufferFileCache->cacheTreeNode);
  bufferFileCache->cacheTreeNode = NULL;
 }
 cacheCurrentRAMSize -= bufferFileCache->getAndZeroSize(); // first time it
subtracts and then returns 0
 if(!bufferFileCache->getWriteLock() && !bufferFileCache->getIsReadLock())
 {
  delete bufferFileCache;
  return true;
 }
 else
 {
  if(!alreadyMarkedAsToDelete)
   bufferFileCache->setDeleteFileASAP();
  return false;
 }
}
//--------------------------------------------------------------------------

if(bufferFileCache->cacheTreeNode)
{
RAMFileCacheIndex->Remove(bufferFileCache->cacheTreeNode);
bufferFileCache->cacheTreeNode = NULL;
}

When this is entered, the data pointer or the bufferfilecache is NOT
deleted by the tree, right? Also my question is pending, how do I get the
tcachenode of the lastly inserted/updated data??

Best Regards,

SZ

On Mon, Dec 5, 2011 at 17:08, Fastream Technologies <ga...@fastream.com>wrote:

> Both of these do not work. Must I pass Now() while updating? I am just
> passing the old timestamp!
> Regards,
>
> SZ
> On Mon, Dec 5, 2011 at 16:51, Fastream Technologies <ga...@fastream.com>wrote:
>
>> Ok, let's go step by step: How do I get the TCacheNode of the last
>> inserted one? First() or Last()?
>> SZ
>> On Mon, Dec 5, 2011 at 16:38, Fastream Technologies 
>> <ga...@fastream.com>wrote:
>>
>>> FYI, this is the code:
>>>
>>>    RAMFileCacheIndex->OnList = CacheTreeOnListForRAM;
>>>   RAMFileCacheIndex->ListTree();
>>>
>>>   for(int i = RAMFileCacheIndexList->Count - 1; i >= 0; --i)
>>>    
>>> deleteFileFromRAMCacheWRTIndex((RAMFileCache*)RAMFileCacheIndexList->Items[i],
>>> false); (basically deletes the data
>>>
>>>   RAMFileCacheIndexList->Clear();
>>> ...
>>>
>>> void __fastcall ProxyCache::CacheTreeOnListForRAM(TObject *Sender, const
>>> String Key, TDateTime TimeStamp, Pointer Data, int Len, TDateTime Expires,
>>> bool &Cancel)
>>> {
>>>  RAMFileCacheIndexList->Add(Data);
>>> }
>>>
>>> //---------------------------------------------------------------------------
>>>
>>> Best Regards,
>>>
>>> SZ
>>>  On Mon, Dec 5, 2011 at 16:36, Fastream Technologies <ga...@fastream.com
>>> > wrote:
>>>
>>>> Okay, let's do it one entry per URL. Now the TList recording and
>>>> deleting afterwards in OnList does NOT work. Gives AV. What is the proper
>>>> way? Can you help us with some consultancy? Please let me know privately:
>>>> ga...@fastream.com.
>>>> Best Regards,
>>>>
>>>> SZ
>>>>
>>>> On Mon, Dec 5, 2011 at 13:47, Arno Garrels <arno.garr...@gmx.de> wrote:
>>>>
>>>>> Fastream Technologies wrote:
>>>>> > Let me elaborate the issue: In our caches, we may have duplicate
>>>>> > URLs.
>>>>>
>>>>> Then TCacheTree doesn't fit.
>>>>> As I wrote yesterday, the Key (in your case the URL) must be unique,
>>>>> no way around, it is the primary key.
>>>>> However there may exist multiple, different Keys/URLs with the same
>>>>> TimeStamp since it is easily possible to add thousands of items
>>>>> in less than 10 ms with Now() always returning the same value.
>>>>>
>>>>> --
>>>>> Arno Garrels
>>>>> --
>>>>> To unsubscribe or change your settings for TWSocket mailing list
>>>>> please goto http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket
>>>>> Visit our website at http://www.overbyte.be
>>>>>
>>>>
>>>>
>>>
>>
>
--
To unsubscribe or change your settings for TWSocket mailing list
please goto http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket
Visit our website at http://www.overbyte.be

Reply via email to