User: xtoff
Date: 2009/12/19 04:27 PM
Modified:
/InversionOfControl/trunk/lib/mono-3.5/
Castle.Core.dll, Castle.Core.xml, Castle.DynamicProxy2.dll,
Castle.DynamicProxy2.xml
/InversionOfControl/trunk/lib/net-3.5/
Castle.Core.dll, Castle.Core.xml, Castle.DynamicProxy2.dll,
Castle.DynamicProxy2.xml
/InversionOfControl/trunk/lib/silverlight-3.0/
Castle.Core.dll, Castle.Core.xml, Castle.DynamicProxy2.dll,
Castle.DynamicProxy2.xml
/InversionOfControl/trunk/src/Castle.MicroKernel/Lifestyle/Pool/
DefaultPool.cs
/InversionOfControl/trunk/src/Castle.MicroKernel/Releasers/
AllComponentsReleasePolicy.cs
/InversionOfControl/trunk/src/Castle.MicroKernel/SubSystems/Naming/
DefaultNamingSubSystem.cs
/InversionOfControl/trunk/src/Castle.Windsor/Adapters/ComponentModel/
ContainerWrapper.cs
Log:
upgrade references to Core and DP
changed all locking to use Lock class from Core
File Changes:
Directory: /InversionOfControl/trunk/src/Castle.Windsor/Adapters/ComponentModel/
================================================================================
File [modified]: ContainerWrapper.cs
Delta lines: +0 -0
===================================================================
Directory: /InversionOfControl/trunk/src/Castle.MicroKernel/SubSystems/Naming/
==============================================================================
File [modified]: DefaultNamingSubSystem.cs
Delta lines: +9 -32
===================================================================
---
InversionOfControl/trunk/src/Castle.Windsor/Adapters/ComponentModel/ContainerWrapper.cs
2009-12-19 23:05:36 UTC (rev 6473)
+++
InversionOfControl/trunk/src/Castle.Windsor/Adapters/ComponentModel/ContainerWrapper.cs
2009-12-19 23:27:07 UTC (rev 6474)
@@ -21,6 +21,7 @@
using System.Threading;
using Castle.Core;
+ using Castle.Core.Internal;
using Castle.MicroKernel;
/// <summary>
@@ -32,10 +33,10 @@
#region ContainerWrapper Fields
private ISite site;
- private IWindsorContainer container;
- private IServiceProvider parentProvider;
- private IList<IContainerAdapterSite> sites =new
List<IContainerAdapterSite>();
- private readonly ReaderWriterLock rwlock;
+ private readonly IWindsorContainer container;
+ private readonly IServiceProvider parentProvider;
+ private readonly IList<IContainerAdapterSite> sites =new
List<IContainerAdapterSite>();
+ private readonly Lock @lock = Lock.Create();
#endregion
@@ -70,7 +71,6 @@
this.container = container;
this.parentProvider = parentProvider;
- this.rwlock = new ReaderWriterLock();
RegisterAdapterWithKernel();
}
@@ -106,9 +106,7 @@
{
get
{
- rwlock.AcquireReaderLock(Timeout.Infinite);
-
- try
+ using(@lock.ForReading())
{
IComponent[] components = new
IComponent[sites.Count];
@@ -119,10 +117,6 @@
return new
ComponentCollection(components);
}
- finally
- {
- rwlock.ReleaseReaderLock();
- }
}
}
@@ -145,9 +139,7 @@
{
if (component != null)
{
- rwlock.AcquireWriterLock(Timeout.Infinite);
-
- try
+ using(@lock.ForWriting())
{
ISite site = component.Site;
@@ -173,10 +165,6 @@
sites.Add(newSite);
}
}
- finally
- {
- rwlock.ReleaseWriterLock();
- }
}
}
@@ -193,9 +181,7 @@
{
if (component != null)
{
- rwlock.AcquireWriterLock(Timeout.Infinite);
-
- try
+ using(@lock.ForWriting())
{
IContainerAdapterSite site =
component.Site as ContainerAdapterSite;
@@ -214,10 +200,6 @@
sites.Remove(site);
}
}
- finally
- {
- rwlock.ReleaseWriterLock();
- }
}
}
@@ -508,18 +490,13 @@
{
if (disposing)
{
- rwlock.AcquireWriterLock(Timeout.Infinite);
- try
+ using(@lock.ForWriting())
{
DisposeContainer();
DisposeComponent();
RaiseDisposed();
}
- finally
- {
- rwlock.ReleaseWriterLock();
- }
}
}
Directory: /InversionOfControl/trunk/src/Castle.MicroKernel/Lifestyle/Pool/
===========================================================================
File [modified]: DefaultPool.cs
Delta lines: +12 -37
===================================================================
---
InversionOfControl/trunk/src/Castle.MicroKernel/Releasers/AllComponentsReleasePolicy.cs
2009-12-19 23:05:36 UTC (rev 6473)
+++
InversionOfControl/trunk/src/Castle.MicroKernel/Releasers/AllComponentsReleasePolicy.cs
2009-12-19 23:27:07 UTC (rev 6474)
@@ -18,6 +18,8 @@
using System.Collections.Generic;
using System.Threading;
+ using Castle.Core.Internal;
+
#if (!SILVERLIGHT)
[Serializable]
#endif
@@ -26,75 +28,52 @@
private readonly IDictionary<object, Burden> instance2Burden =
new Dictionary<object, Burden>(new
Util.ReferenceEqualityComparer());
- private readonly ReaderWriterLock rwLock = new
ReaderWriterLock();
+ private readonly Lock @lock = Lock.Create();
public virtual void Track(object instance, Burden burden)
{
- rwLock.AcquireWriterLock(Timeout.Infinite);
- try
+ using(@lock.ForWriting())
{
instance2Burden[instance] = burden;
}
- finally
- {
- rwLock.ReleaseWriterLock();
- }
}
public bool HasTrack(object instance)
{
if (instance == null) throw new
ArgumentNullException("instance");
- rwLock.AcquireReaderLock(Timeout.Infinite);
- try
+ using(@lock.ForReading())
{
return instance2Burden.ContainsKey(instance);
}
- finally
- {
- rwLock.ReleaseReaderLock();
- }
}
public void Release(object instance)
{
if (instance == null) throw new
ArgumentNullException("instance");
- rwLock.AcquireReaderLock(Timeout.Infinite);
- try
+ using (var locker = @lock.ForReadingUpgradeable())
{
Burden burden;
if (!instance2Burden.TryGetValue(instance, out
burden))
return;
- LockCookie cookie =
rwLock.UpgradeToWriterLock(Timeout.Infinite);
+ locker.Upgrade();
+ if (!instance2Burden.TryGetValue(instance, out
burden))
+ return;
- try
- {
- if
(!instance2Burden.TryGetValue(instance, out burden))
- return;
+ instance2Burden.Remove(instance);
- instance2Burden.Remove(instance);
+ burden.Release(this);
- burden.Release(this);
- }
- finally
- {
- rwLock.DowngradeFromWriterLock(ref
cookie);
- }
}
- finally
- {
- rwLock.ReleaseReaderLock();
- }
}
public void Dispose()
{
- rwLock.AcquireWriterLock(Timeout.Infinite);
- try
+ using(@lock.ForWriting())
{
KeyValuePair<object, Burden>[] burdens =
new KeyValuePair<object,
Burden>[instance2Burden.Count];
@@ -109,10 +88,6 @@
}
}
}
- finally
- {
- rwLock.ReleaseWriterLock();
- }
}
}
}
Directory: /InversionOfControl/trunk/src/Castle.MicroKernel/Releasers/
======================================================================
File [modified]: AllComponentsReleasePolicy.cs
Delta lines: +25 -119
===================================================================
---
InversionOfControl/trunk/src/Castle.MicroKernel/SubSystems/Naming/DefaultNamingSubSystem.cs
2009-12-19 23:05:36 UTC (rev 6473)
+++
InversionOfControl/trunk/src/Castle.MicroKernel/SubSystems/Naming/DefaultNamingSubSystem.cs
2009-12-19 23:27:07 UTC (rev 6474)
@@ -19,6 +19,8 @@
using System;
using System.Threading;
+ using Castle.Core.Internal;
+
/// <summary>
/// Default <see cref="INamingSubSystem"/> implementation.
/// Keeps services map as a simple hash table.
@@ -35,7 +37,7 @@
/// to <see cref="IHandler"/>
/// Items in this dictionary are sorted in insertion order.
/// </summary>
- protected IDictionary<string,IHandler> key2Handler;
+ protected readonly IDictionary<string, IHandler> key2Handler =
new Dictionary<string, IHandler>();
/// <summary>
/// Map(Type, IHandler) to map a service
@@ -45,13 +47,13 @@
/// It serve as a fast lookup for the common case of having a
single handler for
/// a type.
/// </summary>
- protected IDictionary<Type, IHandler> service2Handler;
+ protected readonly IDictionary<Type, IHandler> service2Handler
= new Dictionary<Type, IHandler>();
private readonly IDictionary<Type, IHandler[]>
handlerListsByTypeCache = new Dictionary<Type, IHandler[]>();
private readonly IDictionary<Type, IHandler[]>
assignableHandlerListsByTypeCache = new Dictionary<Type, IHandler[]>();
private IHandler[] allHandlersCache;
- private List<IHandler> allHandlers = new List<IHandler>();
- private readonly ReaderWriterLockSlim locker = new
ReaderWriterLockSlim();
+ private readonly List<IHandler> allHandlers = new
List<IHandler>();
+ private readonly Lock @lock = Lock.Create();
private readonly IList<IHandlerSelector> selectors = new
List<IHandlerSelector>();
/// <summary>
@@ -59,8 +61,6 @@
/// </summary>
public DefaultNamingSubSystem()
{
- key2Handler = new Dictionary<string,IHandler>();
- service2Handler = new Dictionary<Type, IHandler>();
}
#region INamingSubSystem Members
@@ -69,8 +69,7 @@
{
Type service = handler.Service;
- locker.EnterWriteLock();
- try
+ using(@lock.ForWriting())
{
if (key2Handler.ContainsKey(key))
{
@@ -86,10 +85,6 @@
this[key] = handler;
InvalidateCache();
}
- finally
- {
- locker.ExitWriteLock();
- }
}
private void InvalidateCache()
@@ -101,77 +96,49 @@
public virtual bool Contains(String key)
{
- locker.EnterReadLock();
- try
+ using (@lock.ForReading())
{
return key2Handler.ContainsKey(key);
}
- finally
- {
- locker.ExitReadLock();
- }
}
public virtual bool Contains(Type service)
{
- locker.EnterReadLock();
- try
+ using (@lock.ForReading())
{
return service2Handler.ContainsKey(service);
}
- finally
- {
- locker.ExitReadLock();
- }
}
public virtual void UnRegister(String key)
{
- var writeLockHeld = locker.IsWriteLockHeld;
- if (writeLockHeld == false)
- locker.EnterWriteLock();
- try
+ using (@lock.ForWriting())
{
IHandler value;
- if(key2Handler.TryGetValue(key, out value))
+ if (key2Handler.TryGetValue(key, out value))
allHandlers.Remove(value);
key2Handler.Remove(key);
InvalidateCache();
}
- finally
- {
- if (writeLockHeld == false)
- locker.ExitWriteLock();
- }
}
public virtual void UnRegister(Type service)
{
- locker.EnterWriteLock();
- try
+ using (@lock.ForWriting())
{
service2Handler.Remove(service);
InvalidateCache();
}
- finally
- {
- locker.ExitWriteLock();
- }
}
public virtual int ComponentCount
{
get
{
- locker.EnterReadLock();
- try
+ using (@lock.ForReading())
{
return allHandlers.Count;
}
- finally
- {
- locker.ExitReadLock();
- }
}
}
@@ -183,17 +150,12 @@
if (selectorsOpinion != null)
return selectorsOpinion;
- locker.EnterReadLock();
- try
+ using (@lock.ForReading())
{
IHandler value;
key2Handler.TryGetValue(key, out value);
return value;
}
- finally
- {
- locker.ExitReadLock();
- }
}
public virtual IHandler[] GetHandlers(String query)
@@ -209,8 +171,8 @@
if (selectorsOpinion != null)
return selectorsOpinion;
- locker.EnterReadLock();
- try
+
+ using (@lock.ForReading())
{
IHandler handler;
@@ -218,10 +180,6 @@
return handler;
}
- finally
- {
- locker.ExitReadLock();
- }
}
public virtual IHandler GetHandler(String key, Type service)
@@ -233,8 +191,7 @@
if (selectorsOpinion != null)
return selectorsOpinion;
- locker.EnterReadLock();
- try
+ using (@lock.ForReading())
{
IHandler handler;
@@ -242,10 +199,6 @@
return handler;
}
- finally
- {
- locker.ExitReadLock();
- }
}
public virtual IHandler[] GetHandlers(Type service)
@@ -253,20 +206,13 @@
if (service == null) throw new
ArgumentNullException("service");
IHandler[] result;
- locker.EnterReadLock();
- try
+ using (@lock.ForReading())
{
if
(handlerListsByTypeCache.TryGetValue(service, out result))
return result;
}
- finally
- {
- locker.ExitReadLock();
- }
-
- locker.EnterWriteLock();
- try
+ using (@lock.ForWriting())
{
var handlers = GetHandlers();
@@ -285,10 +231,6 @@
handlerListsByTypeCache[service] = result;
}
- finally
- {
- locker.ExitWriteLock();
- }
return result;
}
@@ -298,19 +240,13 @@
if (service == null) throw new
ArgumentNullException("service");
IHandler[] result;
- locker.EnterReadLock();
- try
+ using (@lock.ForReading())
{
if
(assignableHandlerListsByTypeCache.TryGetValue(service, out result))
return result;
}
- finally
- {
- locker.ExitReadLock();
- }
- locker.EnterWriteLock();
- try
+ using (@lock.ForWriting())
{
var handlers = GetHandlers();
@@ -325,7 +261,7 @@
else
{
if (service.IsGenericType &&
-
service.GetGenericTypeDefinition().IsAssignableFrom(handlerService))
+
service.GetGenericTypeDefinition().IsAssignableFrom(handlerService))
{
list.Add(handler);
}
@@ -335,22 +271,13 @@
result = list.ToArray();
assignableHandlerListsByTypeCache[service] =
result;
}
- finally
- {
- locker.ExitWriteLock();
- }
return result;
}
public virtual IHandler[] GetHandlers()
{
- var lockHeld = locker.IsReadLockHeld ||
- locker.IsUpgradeableReadLockHeld ||
- locker.IsWriteLockHeld;
- if (lockHeld == false)
- locker.EnterReadLock();
- try
+ using (@lock.ForReading())
{
if (allHandlersCache != null)
@@ -364,29 +291,16 @@
return list;
}
- finally
- {
- if (lockHeld == false)
- locker.ExitReadLock();
- }
}
public virtual IHandler this[Type service]
{
set
{
- var writeLockHeld = locker.IsWriteLockHeld;
- if(writeLockHeld==false)
- locker.EnterWriteLock();
- try
+ using (@lock.ForWriting())
{
service2Handler[service] = value;
}
- finally
- {
- if (writeLockHeld == false)
- locker.ExitWriteLock();
- }
}
}
@@ -394,19 +308,11 @@
{
set
{
- var writeLockHeld = locker.IsWriteLockHeld;
- if (writeLockHeld == false)
- locker.EnterWriteLock();
- try
+ using (@lock.ForWriting())
{
key2Handler[key] = value;
allHandlers.Add(value);
}
- finally
- {
- if (writeLockHeld == false)
- locker.ExitWriteLock();
- }
}
}
Directory: /InversionOfControl/trunk/lib/mono-3.5/
==================================================
File [modified]: Castle.Core.dll
Delta lines: None
None
File [modified]: Castle.Core.xml
Delta lines: +1 -1
===================================================================
--- InversionOfControl/trunk/lib/mono-3.5/Castle.DynamicProxy2.xml
2009-12-19 23:05:36 UTC (rev 6473)
+++ InversionOfControl/trunk/lib/mono-3.5/Castle.DynamicProxy2.xml
2009-12-19 23:27:07 UTC (rev 6474)
@@ -582,7 +582,7 @@
The default assembly (simple) name used for the assemblies
generated by a <see cref="T:Castle.DynamicProxy.ModuleScope" /> instance.
</summary>
</member>
- <member name="P:Castle.DynamicProxy.ModuleScope.RWLock">
+ <member name="P:Castle.DynamicProxy.ModuleScope.Lock">
<summary>
Users of this <see cref="T:Castle.DynamicProxy.ModuleScope" />
should use this lock when accessing the cache.
File [modified]: Castle.DynamicProxy2.dll
Delta lines: None
None
File [modified]: Castle.DynamicProxy2.xml
Delta lines: +6 -0
===================================================================
--- InversionOfControl/trunk/lib/net-3.5/Castle.Core.xml 2009-12-19
23:05:36 UTC (rev 6473)
+++ InversionOfControl/trunk/lib/net-3.5/Castle.Core.xml 2009-12-19
23:27:07 UTC (rev 6474)
@@ -485,6 +485,12 @@
If the index is invalid.
</exception>
</member>
+ <member name="M:Castle.Core.Internal.Lock.Create">
+ <summary>
+ Creates a new lock.
+ </summary>
+ <returns></returns>
+ </member>
<member name="T:Castle.Core.IInitializable">
<summary>
Directory: /InversionOfControl/trunk/lib/net-3.5/
=================================================
File [modified]: Castle.Core.dll
Delta lines: None
None
File [modified]: Castle.Core.xml
Delta lines: +1 -1
===================================================================
--- InversionOfControl/trunk/lib/net-3.5/Castle.DynamicProxy2.xml
2009-12-19 23:05:36 UTC (rev 6473)
+++ InversionOfControl/trunk/lib/net-3.5/Castle.DynamicProxy2.xml
2009-12-19 23:27:07 UTC (rev 6474)
@@ -656,7 +656,7 @@
to avoid the performance hit associated with proxy generation.
</remarks>
</member>
- <member name="P:Castle.DynamicProxy.ModuleScope.RWLock">
+ <member name="P:Castle.DynamicProxy.ModuleScope.Lock">
<summary>
Users of this <see cref="T:Castle.DynamicProxy.ModuleScope"/>
should use this lock when accessing the cache.
File [modified]: Castle.DynamicProxy2.dll
Delta lines: None
None
File [modified]: Castle.DynamicProxy2.xml
Delta lines: +6 -0
===================================================================
--- InversionOfControl/trunk/lib/silverlight-3.0/Castle.Core.xml
2009-12-19 23:05:36 UTC (rev 6473)
+++ InversionOfControl/trunk/lib/silverlight-3.0/Castle.Core.xml
2009-12-19 23:27:07 UTC (rev 6474)
@@ -485,6 +485,12 @@
If the index is invalid.
</exception>
</member>
+ <member name="M:Castle.Core.Internal.Lock.Create">
+ <summary>
+ Creates a new lock.
+ </summary>
+ <returns></returns>
+ </member>
<member name="T:Castle.Core.IInitializable">
<summary>
Directory: /InversionOfControl/trunk/lib/silverlight-3.0/
=========================================================
File [modified]: Castle.Core.dll
Delta lines: None
None
File [modified]: Castle.Core.xml
Delta lines: +1 -1
===================================================================
--- InversionOfControl/trunk/lib/silverlight-3.0/Castle.DynamicProxy2.xml
2009-12-19 23:05:36 UTC (rev 6473)
+++ InversionOfControl/trunk/lib/silverlight-3.0/Castle.DynamicProxy2.xml
2009-12-19 23:27:07 UTC (rev 6474)
@@ -546,7 +546,7 @@
</summary>
<returns>A weak-named module generated by this scope.</returns>
</member>
- <member name="P:Castle.DynamicProxy.ModuleScope.RWLock">
+ <member name="P:Castle.DynamicProxy.ModuleScope.Lock">
<summary>
Users of this <see cref="T:Castle.DynamicProxy.ModuleScope"/>
should use this lock when accessing the cache.
File [modified]: Castle.DynamicProxy2.dll
Delta lines: None
None
File [modified]: Castle.DynamicProxy2.xml
Delta lines: +5 -20
===================================================================
---
InversionOfControl/trunk/src/Castle.MicroKernel/Lifestyle/Pool/DefaultPool.cs
2009-12-19 23:05:36 UTC (rev 6473)
+++
InversionOfControl/trunk/src/Castle.MicroKernel/Lifestyle/Pool/DefaultPool.cs
2009-12-19 23:27:07 UTC (rev 6474)
@@ -20,6 +20,7 @@
using System.Threading;
using Castle.Core;
+ using Castle.Core.Internal;
#if (!SILVERLIGHT)
[Serializable]
@@ -30,7 +31,7 @@
private readonly List<object> inUse = new List<object>();
private readonly int initialsize;
private readonly int maxsize;
- private readonly ReaderWriterLock rwlock;
+ private readonly Lock rwlock = Lock.Create();
private readonly IComponentActivator componentActivator;
public DefaultPool(int initialsize, int maxsize,
IComponentActivator componentActivator)
@@ -39,10 +40,6 @@
this.maxsize = maxsize;
this.componentActivator = componentActivator;
- this.rwlock = new ReaderWriterLock();
-
- // Thread thread = new Thread(new
ThreadStart(InitPool));
- // thread.Start();
InitPool();
}
@@ -50,11 +47,9 @@
public virtual object Request(CreationContext context)
{
- rwlock.AcquireWriterLock(-1);
-
object instance;
- try
+ using(rwlock.ForWriting())
{
if (available.Count != 0)
@@ -78,19 +73,13 @@
inUse.Add(instance);
}
- finally
- {
- rwlock.ReleaseWriterLock();
- }
return instance;
}
public virtual bool Release(object instance)
{
- rwlock.AcquireWriterLock(-1);
-
- try
+ using(rwlock.ForWriting())
{
if (!inUse.Contains(instance))
{
@@ -118,10 +107,6 @@
return true;
}
}
- finally
- {
- rwlock.ReleaseWriterLock();
- }
}
#endregion
@@ -146,7 +131,7 @@
/// </summary>
private void InitPool()
{
- List<object> tempInstance = new List<object>();
+ List<object> tempInstance = new List<object>();
for(int i=0; i < initialsize; i++)
--
You received this message because you are subscribed to the Google Groups
"Castle Project Commits" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/castle-project-commits?hl=en.