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;

Would this work? Because we may have duplicates...

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