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