Fastream Technologies wrote:
> On Sun, Dec 4, 2011 at 11:05, Arno Garrels <arno.garr...@gmx.de>
> wrote: 
> 
>> ----- Original Message -----
>> From: "Fastream Technologies" <ga...@fastream.com>
>> To: "ICS support mailing" <twsocket@elists.org>
>> Sent: Sunday, December 04, 2011 7:16 AM
>> Subject: Re: [twsocket] Converting a cache to AVL tree
>> 
>> 
>>> The component I tried to use is TCacheTree. It has a timeout
>>> argument for each added item. I do not want any timers or any
>>> timeouts yet liked the component. Is there a way to omit
>>> expiration. I will use my own code for it. 
>> 
>> TCacheTree doesn't use any timer, it just provides two TDateTime
>> fields. There are two indices, first is Key of type string, second
>> is TimeStamp of type TDateTime used to find oldest entries very
>> fast. It's two linked AVL trees.
>> 
>> procedure Insert(
>>    Key        : String;            // Unique key
>>    Data       : Pointer;           // Pointer to data
>>    Len        : Integer;           // Optionally data size
>>    TimeStamp  : TDateTime = MinDT; // Second key (dups are allowed
>> and handled)
>>    Expires    : TDateTime = MinDT; // What ever you like
>>    UpdateTime : Boolean = True;    // Shall the TDateTime fields be
>> updated?
>>    UpdateData : Boolean = True);   // Shall Data be updated?
>> 
>> Use Insert() for both add and update an entry.
>> 
>>  Node : TCacheNode;
>> begin
>>  Node := FCacheTree.FindKey(Key);
>>  if Node <> nil then
>>  begin
>>    // Node.IdxRef.TimeStamp // i.e read the TimeStamp
>>    // i.e update TimeStamp and Expires, don't update Data
>>    FCacheTree.Insert(Key, nil, 0, time1, time2, TRUE, FALSE);
>>  end;
>> 
>> Oldest() returns oldest entry.
>> Flush() removes all entries older or same DateTime as passed.
>> 
>> Hope this helps.
>> 
>> --
>> Arno Garrels
>> 
>> 
>> 
> 
> Critical question:  Node.IdxRef.TimeStamp = updatedDate;

You can't assign a value, property TimeStamp is read-only.
 
> Would this work? Because we may have duplicates...

Use Insert() as described above to update the TimeStamp value.
Yes, TimeStamp duplicates are allowed.

-- 
Arno Garrels  


> 
> Regards,
> 
> SZ
--
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