----- 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


> Best Regards,
> 
> SZ
> On Sat, Dec 3, 2011 at 18:54, Arno Garrels <arno.garr...@gmx.de> wrote:
> 
>> Fastream Technologies wrote:
>> > Hello,
>> >
>> > I wonder if there is an easy way to do this? How does one achieve no
>> > timeout in ICS avl tree?
>>
>> Please be more specific, AFAIR there's no timeout in any ICS AVL tree.
>> BTW: Also have a look at the new TIcsAvlPointerTree and TIcsAvlObjectTree
>> in the IPv6 branch, included in OverbyteIcsAvlTrees.
>>
>> --
>> 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
--
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