+2010-05-06 Marek Habersack <mhabersack@novell.com>
+
+ * OutputCacheModule.cs: added a 2.0 internal property to return
+ the internal provider used in this profile.
+
+ * OutputCache.cs: added internal RemoveFromProvider method to
+ remove items from the indicated provider.
+
+2010-02-23 Marek Habersack <mhabersack@novell.com>
+
+ * CachedVaryBy.cs: made serializable for 4.0+ (necessary for
+ extensible output caching)
+
+2010-02-03 Marek Habersack <mhabersack@novell.com>
+
+ * OutputCache.cs: DefaultProviderName checks if there was any
+ provider configured and, if not, returns a built-in provider's
+ name.
+
+ * SqlCacheDependencyAdmin.cs: added
+
+ * OutputCacheProviderCollection.cs: added
+
+ * OutputCacheProvider.cs: added
+
+ * OutputCacheModule.cs: uses the 4.0 extensible output cache
+ provider model now (also internally in the 2.0 profile)
+ OutputCacheProvider is retrieved on every request using
+ HttpApplication.GetOutputCacheProviderName (4.0+). In the 2.0
+ profile an instance of InMemoryOutputCacheProvider is always
+ returned.
+
+ * InMemoryOutputCacheProvider.cs: default output cache provider
+ for ASP.NET 4.0, also used internally in the 2.0 profile.
+
+ * CachedVaryBy.cs: made the generated key shorter
+
+ * CacheItemPriorityQueueDebug.cs: debugging support for
+ CacheItemPriorityQueue. Most of the code is compiled only when the
+ DEBUG macro is defined. Debugging support includes recording of
+ the queue operations sequence which is output to an XML file on
+ appdomain shutdown. The recorded sequence files can be used to
+ generate NUnit test cases for the priority queue (see
+ ../Test/tools/README)
+
+ * CacheItemPriorityQueue.cs: rewritten using an array based heap
+ instead of a binary tree based one - implementation is simpler,
+ faster and more elegant. Heap is initially 32 entries long and
+ its size is doubled every time it fills up. After reaching a
+ threshold (8192 entries currently) it is shrunk to the number of
+ items + 1/3 of item count in order to preserve memory.
+
+ * CacheItem.cs: added a Guid field to easier distinguish items
+ (mostly for debugging purposes)
+
+ * CacheDependency.cs: minor performance improvements
+
+ * Cache.cs: better handling of timer periods
+
+2010-01-25 Marek Habersack <mhabersack@novell.com>
+
+ * SqlCacheDependency.cs: added parameter checks to the
+ constructors.
+ Partially implemented 4.0 method CreateOutputCacheDependency
+
+ * CacheItemUpdateReason.cs, CacheItemUpdateCallback.cs: added
+
+ * CacheItem.cs: added OnUpdateCallback field
+
+ * Cache.cs: implemented support for cache item update callback
+ (3.5+)
+
+ * AggregateCacheDependency.cs: added undocumented
+ DependencyDispose method override
+
+2010-01-22 Marek Habersack <mhabersack@novell.com>
+
+ * SubstitutionResponseElement.cs: implemented correct
+ (de)serialization of the Callback delegate.
+
+ * OutputCache.cs: implemented Serialize, Deserialize,
+ DefaultProviderName and Providers.
+
+2010-01-21 Marek Habersack <mhabersack@novell.com>
+
+ * DatabaseNotEnabledForNotificationException.cs, OutputCache.cs,
+ FileResponseElement.cs, HeaderElement.cs, IOutputCacheEntry.cs,
+ MemoryResponseElement.cs, OutputCacheProvider.cs,
+ ResponseElement.cs, OutputCacheProviderCollection.cs,
+ SubstitutionResponseElement.cs,
+ TableNotEnabledForNotificationException.cs: added
+
+ * CacheDependency.cs: default constructor is protected in 4.0
+
+2010-01-06 Marek Habersack <mhabersack@novell.com>
+
+ * CacheItemPriorityQueue.cs: make sure lastParent is never null if
+ root is not null in Enqueue. Possible fix for bug #567869
+
+2009-12-01 Marek Habersack <mhabersack@novell.com>
+
+ * Cache.cs: ExpireItems dequeues the next item when a disabled
+ item is found before continuing to look for items to expire. Fixes
+ bug #559470. Patch from Adriaan van Kekem <avkekem@hotmail.com>,
+ thanks.
+
+2009-10-21 Marek Habersack <mhabersack@novell.com>
+
+ * CacheItemPriorityQueue.cs: lock the queue on enqueue/dequeue
+
+2009-10-20 Marek Habersack <mhabersack@novell.com>
+
+ * OutputCacheModule.cs: keysCache and entriesToInvalidate
+ dictionaries are allocated only when they are
+ required. BuildManager's RemoveEntry envent is subscribed to only
+ if cache actually has some entries.
+ Added support for post-cache substitution.
+
+ * CachedRawResponse.cs: data is stored in a list of DataItem
+ instances instead of just in a single buffer. This enables support
+ for post-cache substitution.
+
+2009-10-05 Marek Habersack <mhabersack@novell.com>
+
+ * Cache.cs: if item expiration time exceeds the maximum value
+ Timer accepts, use the latter - item will expire properly anyway,
+ as the timer will be rescheduled for the item's expiration time
+ once that item is bubbled to the top of the priority queue. Fixes
+ bug #544171
+
+2009-09-26 Marek Habersack <mhabersack@novell.com>
+
+ * CacheItemPriorityQueue.cs, CacheItem.cs, CacheItemEnumerator.cs:
+ added
+
+ * Cache.cs: factored out CacheItem and CacheItemEnumerator to
+ separate files.
+ Use reader-writer locks instead of Monitor.
+ Added two 3.5sp1 properties - EffectivePrivateBytesLimit and
+ EffectivePercentagePhysicalMemoryLimit.
+ Added support for disabling cache item expiration.
+ One timer is used to expire all timed items (instead of one timer
+ per item). Timed items are kept in a priority queue.
+
+2009-03-03 Marek Habersack <mhabersack@novell.com>
+
+ * CachedRawResponse.cs: headers are stored in NameValueCollection
+ now.
+
+2009-01-09 Marek Habersack <mhabersack@novell.com>
+
+ * Cache.cs: System.Threading.Timer.Change takes a long, not an
+ int. The maximum value of sliding expiration is 365 days
+ (31536000000ms) which fits within the value range of long. The
+ previous cast to int might yield negative values in certain
+ situations which was the reason for bug #464221. Fixes bug #464221
+
+2008-10-21 Marek Habersack <mhabersack@novell.com>
+
+ * OutputCacheModule.cs: seal the class.
+ Made OnRawResponseRemoved a static method.
+
+ * CachedVaryBy.cs: seal the class.
+ Use portable line terminators instead of literal '\n'.
+
+ * Cache.cs: seal the CacheItem and CacheItemEnumerator classes.
+
+ * CacheDependency.cs: dispose the associated dependency in the
+ DependencyDispose method.
+
+ * CachedRawResponse.cs: seal the class
+
+2008-10-15 Marek Habersack <mhabersack@novell.com>
+
+ * OutputCacheModule.cs: do not take any action if Response returns
+ null from GetCachedResponse.
+
+2008-09-30 Juraj Skripsky <js@hotfeet.ch>
+
+ * CachedRawResponse.cs: Don't allocate a 32k buffer that is never
+ used. Fixes enhancement bug #430963.
+
+2008-09-29 Marek Habersack <mhabersack@novell.com>
+
+ * OutputCacheModule.cs: invalidate cache entries when the
+ corresponding source file (.as?x) is recompiled by hooking up to
+ System.Web.Compilation.BuildManager's build cache entry removal
+ event. Fixes bug #429926
+
+2008-09-26 Juraj Skripsky <js@hotfeet.ch>
+
+ * OutputCacheModule.cs: Consistently use InternalCache for
+ CachedRawResponse items and Cache for CachedVaryBy items.
+ Partial fix for bug #429926.
+
+2008-08-11 Marek Habersack <mhabersack@novell.com>
+
+ * Cache.cs: dispose item timer when removing an entry. Fixes bug
+ #416076. Patch provided by Adriaan van Kekem
+ <adriaanvk@gmail.com>, thanks!
+ Pass onRemoveCallback along in Insert. Fixes bugs #324528 and
+ #382644. Patch provided by Juraj Skripsky <juraj@hotfeet.ch>,
+ thanks!
+
+2008-06-18 Marek Habersack <mhabersack@novell.com>
+
+ * SqlCacheDependency.cs: added
+
+2008-05-30 Marek Habersack <mhabersack@novell.com>
+
+ * CacheDependency.cs: do not use synthetized event accessors (to
+ avoid locks).
+
+2008-05-23 Marek Habersack <mhabersack@novell.com>
+
+ * Cache.cs: optimize lock usage
+
+2008-04-28 Marek Habersack <mhabersack@novell.com>
+
+ * Cache.cs: refactoring - move the timeout setting code to
+ separate methods, so that it can be accessed from outside the
+ class. Fixes bug #382644
+
+2008-03-18 Geoff Norton <gnorton@novell.com>
+
+ * Cache.cs: MS allows calling Insert in a removed handler, we need to
+ avoid double locking here otherwise the Insert will never succeed.
+
+2008-02-26 Kornél Pál <kornelpal@gmail.com>
+
+ * CachedRawResponse.cs, OutputCacheModule.cs: Don't add Date header because
+ servers usually add a Date header that would result in duplicate Date header
+ sent to the client. Fixes bug #363404.
+
+2007-12-31 Vladimir Krasnov <vladimirk@maimsoft.com>
+
+ * Cache.cs: added DependencyCache property, a cache object for
+ creating dependencies
+
+2007-12-19 Juraj Skripsky <js@hotfeet.ch>
+
+ * Cache.cs: Replace periodic timer (60s) with per-cache-item expiration
+ timers.
+
+2007-08-17 Marek Habersack <mhabersack@novell.com>
+
+ * CacheDependency.cs: use DependencyChanged as a list of events.
+ OnChanged now calls OnDependencyChanged, to notify
+ AggregateCacheDependency that it has changed. Fixes bug #82419.
+
+2007-08-14 Marek Habersack <mhabersack@novell.com>
+
+ * AggregateCacheDependency.cs: propagate changes in any child
+ dependencies to the base class.
+
+2007-06-25 Juraj Skripsky <js@hotfeet.ch>
+
+ * Cache.cs: Re-introduce "InvokePrivateCallbacks" accidentally
+ removed in r80321.
+
+2007-06-20 Marek Habersack <mhabersack@novell.com>
+
+ * OutputCacheModule.cs: use Context.InternalCache.
+
+ * Cache.cs: 2.0 profile uses generic containers to keep the cache
+ entries.
+ Gotten rid of the InsertPrivate and InsertInternal methods. The
+ latter was moved to one of the Insert overloads.
+ Private entries are no longer handled specifically, because the
+ internal cache is now kept in a separate object.
+ Iterate over the entries when filling the ArrayList in the 2.0
+ profile to avoid type cast exceptions.
+
+2007-05-03 Igor Zelmanovich <igorz@mainsoft.com>
+
+ * AggregateCacheDependency.cs:
+ * CacheDependency.cs:
+ added missing API.
+
+2007-04-10 Marek Habersack <mhabersack@novell.com>
+
+ * CacheDependency.cs: add the NotifyFilters.Size to the
+ watcher flags, so that we watch for modifications to a file when
+ using Linux inotify.
+
+2006-11-29 Marek Habersack <grendello@gmail.com>
+
+ * CachedVaryBy.cs: Make sure that the vary:* header is generated
+ only when allowed under the 2.0 profile.
+
+2006-11-25 Marek Habersack <grendello@gmail.com>
+
+ * AggregateCacheDependency.cs: A small code optimization.
+
+2006-11-14 Marek Habersack <grendel@caudium.net>
+
+ * Cache.cs:
+ * CacheDependency.cs:
+ * AggregateCacheDependency.cs: implement this one.
+
+2006-09-11 Andrew Skiba <andrews@mainsoft.com>
+
+ * CacheDependency.cs: ifdef TARGET_JVM
+
+2006-08-03 Gonzalo Paniagua Javier <gonzalo@ximian.com>
+
+ * CacheDependency.cs:
+ * Cache.cs: check dependencies on other cache keys. Fixes bug #79002.
+
+2006-03-18 Robert Jordan <robertj@gmx.net>
+
+ * OutputCacheModule.cs: invoke the validation callbacks of
+ HttpCachePolicy. Fixes bug #77825.
+
+2006-03-14 Robert Jordan <robertj@gmx.net>
+
+ * CachedVaryBy.cs: Fixed VaryByParam="*". Replaced request.Param
+ with QueryString and Form lookups. Made the param name output case
+ insensitive. Fixes bug #77757.
+
+2005-10-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
+
+ * Cache.cs: new internal method.
+
+2005-09-08 Eyal Alaluf <eyala@mainsoft.com>
+ * OutputCacheModule.cs: Use C# 1.0 style of delegate instantiating.
+ Needed to compile Grasshopper (TARGET_J2EE) which uses MS C# 1.0
+ compiler and does not use msc.
+
+2005-09-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
+
+ * Cache.cs: ignore exceptions thrown by removed item callbacks.
+
+2005-09-02 Sebastien Pouliot <sebastien@ximian.com>
+
+ * Cache.cs: Added security permissions with Minimal level for
+ AspNetHostingPermissionLevel (only LinkDemand as the class is sealed).
+ * CacheDependency.cs: : Added security permissions with Minimal level
+ for AspNetHostingPermissionLevel (note class is sealed only in 1.x).
+
+2005-09-01 Eyal Alaluf <eyala@mainsoft.com>
+ * CacheDependency.cs: TARGET_J2EE fixes.
+
+2005-08-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
+
+ * CacheDependency.cs: add missing ctor.
+
+2005-08-15 Jackson Harper <jackson@ximian.com>
+
+ * CacheItemPriority.cs:
+ * CacheItemRemovedCallback.cs:
+ * CacheItemRemovedReason.cs: New implementations.
+
+2005-07-30 Miguel de Icaza <miguel@novell.com>
+
+ * OutputCacheModule.cs: Make synchronous.
+
+2005-07-15 Lluis Sanchez Gual <lluis@novell.com>
+
+ * Cache.cs: New implementation.
+ * CacheDependency.cs: New implementation.
+
+2005-06-25 Gonzalo Paniagua Javier <gonzalo@ximian.com>
+
+ * Cache.cs: added new InsertPrivate overload.
+
+2005-06-25 Gonzalo Paniagua Javier <gonzalo@ximian.com>
+
+ * Cache.cs:
+ * CacheEntry.cs: style. Removed doc. comments.
+
+2005-06-08 Ilya Kharmatsky <ilyak-at-mainsoft.com>
+
+ * CacheDependency.cs - added TARGET_JVM directives in places,
+ where file watching is using (Mainsoft's implementation currently
+ doesn't support the feature).
+
+2005-05-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
+
+ * CacheEntry.cs: credits for this patch should go to mcs. it catched
+ that the code after 'if ((_enumFlags & Flags.Removed) != 0)' was
+ unreachable.
+
+2005-04-28 Gonzalo Paniagua Javier <gonzalo@ximian.com>
+
+ * ExpiresBuckets.cs:
+ * Cache.cs:
+ * CacheExpires.cs: fix NullReferenceException thrown sometimes when
+ using sliding expiration and under high load. Patch by Eyal Alayuf from
+ Mainsoft.
+
+2005-04-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
+
+ * CacheDependency.cs: remove warnings.
+
+2005-04-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
+
+ * CachedVaryBy.cs: fixed VaryByParam and wildcard (*). Patch by Ilya
+ Kharmatsky (Mainsoft) that fixes bug #73981.
+
+2005-04-01 Lluis Sanchez Gual <lluis@novell.com>
+
+ * CachedRawResponse.cs: Fix warning.
+
+2004-11-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
+
+ * CacheEntry.cs: convert the external DateTime to GMT, as everything
+ else uses that timezone. Fixes bug #69194.
+
+2004-10-03 Ben Maurer <bmaurer@ximian.com>
+
+ * Cache.cs, CacheEntry.cs, CacheExpires.cs, ExpiresBuckets.cs:
+ use UtcNow rather than Now.
+
+2004-05-27 Patrik Torstensson <totte@hiddenpeaks.com>
+
+ * ExpiresBucket.cs (FlushExpiredItems): fix csc and a typo bug
+
+2004-05-27 Patrik Torstensson <totte@hiddenpeaks.com>
+
+ * CacheEntry.cs,CacheExpires.cs,ExpiresBucket.cs,
+ Cache.cs : Fixed deadlock issues, fixed
+ items not correctly being flushed, fixed update
+ of item when expiration has been updated more
+ than 1 min (placed in wrong bucket),
+ fixed deadlock during cache callback when item
+ is removed due to expiriation.
+
+ Rewrite of locking handling in Cache class, leading
+ to better performance and less bugs.
+
+ This rewrite is due to a number of bugs found
+ in the output caching during load (leading to memory
+ leaks and deadlocks)
+
+2004-05-16 Patrik Torstensson <totte@hiddenpeaks.com>
+
+ * ExpiresBucket.cs: Style changes plus;
+ (Update): Fixed possible lock bug (bug 54531)
+ (Expand): remove lock optimization due to it can cause newly
+ added items to be lost.
+ (Remove): fixed possible lock bug.
+
+2004-04-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
+
+ * Cache.cs: fix from Jan Jaros for NullRef (bug #56996).
+
+2004-04-07 Lluis Sanchez Gual <lluis@ximian.com>
+
+ * Cache.cs, CacheEntry.cs, ExpiresBuckets.cs: The value to use to
+ specify infinite timeout in ReaderWriterLock is -1, not 0.
+
+2004-03-19 Gonzalo Paniagua Javier <gonzalo@ximian.com>
+
+ * Watcher.cs: Removed file. Jackson made it obsolete and already
+ removed it from the .sources file.
+
+2004-02-09 Jackson Harper <jackson@ximian.com>
+
+ * ExpiresBucket.cs: Remove duplicate code. Fixes bug #54031.
+
+2004-02-09 Jackson Harper <jackson@ximian.com>
+
+ * Cache.cs: Close entries that are removed.
+ * CacheDependency.cs: Use FileSystemWatcher instead of custom
+ Watcher for file dependencies.
+ * OutputCacheModule.cs: Make the varyby objects dependent on the
+ cached page.
+
+2004-02-05 Jackson Harper <jackson@ximian.com>
+
+ * CacheDependency.cs: Handle cache keys that have not been added
+ to the cache yet.
+
+2004-02-02 Jackson Harper <jackson@ximian.com>
+
+ * OutputCacheModule.cs: We can use file dependancies now.
+
+2004-01-14 Jackson Harper <jackson@ximian.com>
+
+ * Cache.cs: Return null when items are expired but have not been
+ removed yet.
+ * OutputCacheModule.cs: Handle sliding expirations. Remove hacks
+ checking if the item is expired, the cache no longer returns
+ expired items.
+
+2004-01-14 Jackson Harper <jackson@ximian.com>
+
+ * Cache.cs: When using sliding expiration update the cache objects
+ expires time as well as the expires entry expire time because the
+ objects expire time is checked when objects are pulled out. This
+ fixex bug #52778.
+
+2004-01-11 Jackson Harper <jackson@ximian.com>
+
+ * OutputCacheModule.cs: Remove varyby objects when there are no
+ more raw responses that belong to them.
+ * CachedRawResponse.cs: Keep a reference to the VaryBy object that
+ this response belongs to this is so the varyby can be cleaned up.
+ * CachedVaryBy.cs: Keep a reference to the keys that belong to the
+ varyby and a reference to the varyby's key.
+
+2004-01-04 Jackson Harper <jackson@ximian.com>
+
+ * OutputCacheModule.cs: Dont cache items when trace is enabled.
+
+2004-01-04 Jackson Harper <jackson@ximian.com>
+
+ * OutputCacheModule.cs: Update the date header value.
+ * CachedRawResponse.cs: Expose a ref to the date header, so it can
+ be easily set/updated. Remove unused methods and vars.
+
+2004-01-04 Jackson Harper <jackson@ximian.com>
+
+ * CacheDependency.cs: Copy all the entries into the entries array,
+ set on removed callback for items that we are dependent on.
+ * Cache.cs: Add method to get CacheEntry objects.
+ * OutputCacheModule.cs: Make raw repsonse entries dependent on
+ their varyby param entries.
+
+2004-01-04 Jackson Harper <jackson@ximian.com>
+
+ * OutputCacheModule.cs: VaryBy keys now need the HttpContext not just the request.
+ * CachedVaryBy.cs: Handle vary by headers, and vary by custom.
+
+2004-01-03 Gonzalo Paniagua Javier <gonzalo@ximian.com>
+
+ * ExpiresBuckets.cs: set _intPos when expanding the array. Fixes bug
+ 52541. Patch by Jan Jaros (mono-bug@jerryweb.info).
+
+2003-11-21 Jackson Harper <jackson@ximian.com>
+
+ * OutputCacheModule.cs: Only cache a page if it has a 200 status
+ code. Fix tabbing.
+ * CachedVaryBy.cs: Give raw response keys a name, use the
+ httpmethod in the key, and delimit items with \n so it is easier
+ to read when debugging.
+
+2003-11-21 Jackson Harper <jackson@ximian.com>
+
+ * OutputCacheModule.cs: Store a CachedVaryBy object for each
+ cached page. Then store a CachedRawResponse for each combination
+ of varried parameters for a page.
+ * CachedRawResponse.cs: Do not need to store param values anymore
+ those are stored in the CachedVaryBy now. Get the content length
+ so we dont send back the entire buffer.
+ * CachedVaryBy.cs: New file - holds the varyby data for a page,
+ and a method to generate a key based on params. Right now this
+ only works with VaryByParams. TODO: support VaryByHeaders and
+ VaryByCustom.
+
+2003-11-20 Jackson Harper <jackson@ximian.com>
+
+ * Cache.cs: New method so non public cache items can be added.
+ * CachedRawResponse.cs: New file - A snapshot of a response that
+ is stored in the cache and can be used to create a new response.
+ * OutputCacheModule.cs: Module for inserting and retrieving
+ responses from the cache.
+
+2003-04-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
+
+ * CacheDependency.cs:
+ * CacheEntry.cs:
+ * Watcher.cs: added a FileSystemWatcher-like class for dependency checking.
+
+2003-03-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
+
+ * Cache.cs:
+ * CacheDefinitions.cs:
+ * CacheDependency.cs:
+ * CacheEntry.cs:
+ * CacheExpires.cs:
+ * ExpiresBuckets.cs: reformatted, make class status page happier. Does
+ not work yet (wait for the next patch).
+
2002-12-27 Daniel Cazzulino <dcazzulino@users.sf.net>
* CacheEntry.cs: several changes. New constants, use of constants