Fastream Technologies wrote:
> On Sun, Dec 4, 2011 at 11:05, Arno Garrels <arno.garr...@gmx.de>
>> ----- Original Message -----
>> From: "Fastream Technologies" <ga...@fastream.com>
>> To: "ICS support mailing" <email@example.com>
>> 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
>> UpdateData : Boolean = True); // Shall Data be updated?
>> Use Insert() for both add and update an entry.
>> Node : TCacheNode;
>> Node := FCacheTree.FindKey(Key);
>> if Node <> nil then
>> // 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);
>> 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.
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