internal static void RegisterForEviction(PerWebRequestLifestyleManager manager, Burden burden) { var context = HttpContext.Current; var candidates = (IDictionary<PerWebRequestLifestyleManager, Burden>)context.Items[PerRequestEvict]; if (candidates == null) { candidates = new Dictionary<PerWebRequestLifestyleManager, Burden>(); context.Items[PerRequestEvict] = candidates; } candidates.Add(manager, burden); }
internal static void RegisterForEviction(PerWebRequestLifestyleManager manager, Burden burden) { var context = HttpContext.Current; var candidates = (IDictionary <PerWebRequestLifestyleManager, Burden>)context.Items[PerRequestEvict]; if (candidates == null) { candidates = new Dictionary <PerWebRequestLifestyleManager, Burden>(); context.Items[PerRequestEvict] = candidates; } candidates.Add(manager, burden); }
/// <summary> /// Creates an implementation of /// <see cref = "ILifestyleManager" /> /// based /// on /// <see cref = "LifestyleType" /> /// and invokes /// <see cref = "ILifestyleManager.Init" /> /// to initialize the newly created manager. /// </summary> /// <param name = "activator"></param> /// <returns></returns> protected virtual ILifestyleManager CreateLifestyleManager(IComponentActivator activator) { ILifestyleManager manager = null; LifestyleType type = ComponentModel.LifestyleType; switch (type) { case LifestyleType.Thread: #if (!SILVERLIGHT) manager = new PerThreadLifestyleManager(); #else manager = new PerThreadThreadStaticLifestyleManager(); #endif break; case LifestyleType.Transient: manager = new TransientLifestyleManager(); break; #if (!SILVERLIGHT) case LifestyleType.PerWebRequest: manager = new PerWebRequestLifestyleManager(); break; #endif case LifestyleType.Custom: manager = (ILifestyleManager)Activator.CreateInstance(ComponentModel.CustomLifestyle); break; case LifestyleType.Pooled: { int initial = ExtendedPropertiesConstants.Pool_Default_InitialPoolSize; int maxSize = ExtendedPropertiesConstants.Pool_Default_MaxPoolSize; if (ComponentModel.ExtendedProperties.Contains(ExtendedPropertiesConstants.Pool_InitialPoolSize)) initial = (int)ComponentModel.ExtendedProperties[ExtendedPropertiesConstants.Pool_InitialPoolSize]; if (ComponentModel.ExtendedProperties.Contains(ExtendedPropertiesConstants.Pool_MaxPoolSize)) maxSize = (int)ComponentModel.ExtendedProperties[ExtendedPropertiesConstants.Pool_MaxPoolSize]; manager = new PoolableLifestyleManager(initial, maxSize); } break; default: //this includes LifestyleType.Undefined, LifestyleType.Singleton and invalid values manager = new SingletonLifestyleManager(); break; } manager.Init(activator, Kernel, model); return manager; }
public EvictionScope(PerWebRequestLifestyleManager owner) { this.owner = owner; this.owner.evicting = true; }
/// <summary> /// Creates an implementation of <see cref="ILifestyleManager"/> based /// on <see cref="LifestyleType"/> and invokes <see cref="ILifestyleManager.Init"/> /// to initialize the newly created manager. /// </summary> /// <param name="activator"></param> /// <returns></returns> protected virtual ILifestyleManager CreateLifestyleManager(IComponentActivator activator) { ILifestyleManager manager = null; LifestyleType type = ComponentModel.LifestyleType; if (type == LifestyleType.Undefined || type == LifestyleType.Singleton) { manager = new SingletonLifestyleManager(); } else if (type == LifestyleType.Thread) { manager = new PerThreadLifestyleManager(); } else if (type == LifestyleType.Transient) { manager = new TransientLifestyleManager(); } else if (type == LifestyleType.PerWebRequest) { manager = new PerWebRequestLifestyleManager(); } else if (type == LifestyleType.Custom) { manager = (ILifestyleManager) Activator.CreateInstance(ComponentModel.CustomLifestyle); } else if (type == LifestyleType.Pooled) { int initial = ExtendedPropertiesConstants.Pool_Default_InitialPoolSize; int maxSize = ExtendedPropertiesConstants.Pool_Default_MaxPoolSize; if (ComponentModel.ExtendedProperties.Contains(ExtendedPropertiesConstants.Pool_InitialPoolSize)) { initial = (int)ComponentModel.ExtendedProperties[ExtendedPropertiesConstants.Pool_InitialPoolSize]; } if (ComponentModel.ExtendedProperties.Contains(ExtendedPropertiesConstants.Pool_MaxPoolSize)) { maxSize = (int)ComponentModel.ExtendedProperties[ExtendedPropertiesConstants.Pool_MaxPoolSize]; } manager = new PoolableLifestyleManager(initial, maxSize); } manager.Init(activator, Kernel, model); return manager; }
/// <summary> /// Creates an implementation of /// <see cref = "ILifestyleManager" /> /// based /// on /// <see cref = "LifestyleType" /> /// and invokes /// <see cref = "ILifestyleManager.Init" /> /// to initialize the newly created manager. /// </summary> /// <param name = "activator"></param> /// <returns></returns> protected virtual ILifestyleManager CreateLifestyleManager(IComponentActivator activator) { ILifestyleManager manager; var type = ComponentModel.LifestyleType; switch (type) { case LifestyleType.Scoped: var scopeManager = Kernel.GetSubSystem("scope") as IScopeManager; if (scopeManager == null) { throw new InvalidOperationException("Scope Subsystem not found. Did you forget to add it?"); } manager = new ScopedLifestyleManager(new CurrentScopeAccessor(scopeManager, ComponentModel)); break; case LifestyleType.Thread: #if SILVERLIGHT manager = new PerThreadThreadStaticLifestyleManager(); #else manager = new PerThreadLifestyleManager(); #endif break; case LifestyleType.Transient: manager = new TransientLifestyleManager(); break; #if (!SILVERLIGHT && !CLIENTPROFILE) case LifestyleType.PerWebRequest: manager = new PerWebRequestLifestyleManager(); break; #endif case LifestyleType.Custom: manager = ComponentModel.CustomLifestyle.CreateInstance<ILifestyleManager>(); break; case LifestyleType.Pooled: { var initial = ExtendedPropertiesConstants.Pool_Default_InitialPoolSize; var maxSize = ExtendedPropertiesConstants.Pool_Default_MaxPoolSize; if (ComponentModel.ExtendedProperties.Contains(ExtendedPropertiesConstants.Pool_InitialPoolSize)) { initial = (int)ComponentModel.ExtendedProperties[ExtendedPropertiesConstants.Pool_InitialPoolSize]; } if (ComponentModel.ExtendedProperties.Contains(ExtendedPropertiesConstants.Pool_MaxPoolSize)) { maxSize = (int)ComponentModel.ExtendedProperties[ExtendedPropertiesConstants.Pool_MaxPoolSize]; } manager = new PoolableLifestyleManager(initial, maxSize); } break; default: //this includes LifestyleType.Undefined, LifestyleType.Singleton and invalid values manager = new SingletonLifestyleManager(); break; } manager.Init(activator, Kernel, ComponentModel); return manager; }
internal static void RegisterForEviction(PerWebRequestLifestyleManager manager, object instance) { HttpContext context = HttpContext.Current; IDictionary candidates = (IDictionary) context.Items[PerRequestEvict]; if (candidates == null) { candidates = new Hashtable(); context.Items[PerRequestEvict] = candidates; } candidates.Add(manager, instance); }
internal static void RegisterForEviction(PerWebRequestLifestyleManager manager, object instance) { HttpContext context = HttpContext.Current; var candidates = (IDictionary<PerWebRequestLifestyleManager, object>)context.Items[PerRequestEvict]; if (candidates == null) { candidates = new Dictionary<PerWebRequestLifestyleManager, object>(); context.Items[PerRequestEvict] = candidates; } if (!candidates.ContainsKey(manager)) { candidates.Add(manager, instance); } }