aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Common/Kernel/BaseKernel.cs
diff options
context:
space:
mode:
authorLukePulverenti <luke.pulverenti@gmail.com>2013-02-22 19:44:20 -0500
committerLukePulverenti <luke.pulverenti@gmail.com>2013-02-22 19:44:20 -0500
commit6a5bf9cc780c6cd878be4c5111d64226208f0597 (patch)
tree21261a5a0743410d3537eb17dbd8d5967684e34f /MediaBrowser.Common/Kernel/BaseKernel.cs
parent881bf8b9cbccb1c669489b7470906c314893d760 (diff)
extracted more interfaces
Diffstat (limited to 'MediaBrowser.Common/Kernel/BaseKernel.cs')
-rw-r--r--MediaBrowser.Common/Kernel/BaseKernel.cs21
1 files changed, 19 insertions, 2 deletions
diff --git a/MediaBrowser.Common/Kernel/BaseKernel.cs b/MediaBrowser.Common/Kernel/BaseKernel.cs
index 91965e469..202bd3cab 100644
--- a/MediaBrowser.Common/Kernel/BaseKernel.cs
+++ b/MediaBrowser.Common/Kernel/BaseKernel.cs
@@ -197,7 +197,6 @@ namespace MediaBrowser.Common.Kernel
/// Gets the web socket listeners.
/// </summary>
/// <value>The web socket listeners.</value>
- [ImportMany(typeof(IWebSocketListener))]
public IEnumerable<IWebSocketListener> WebSocketListeners { get; private set; }
/// <summary>
@@ -237,6 +236,11 @@ namespace MediaBrowser.Common.Kernel
public IEnumerable<IRestfulService> RestServices { get; private set; }
/// <summary>
+ /// The disposable parts
+ /// </summary>
+ private readonly List<IDisposable> _disposableParts = new List<IDisposable>();
+
+ /// <summary>
/// The _protobuf serializer initialized
/// </summary>
private bool _protobufSerializerInitialized;
@@ -497,6 +501,7 @@ namespace MediaBrowser.Common.Kernel
protected virtual void ComposePartsWithIocContainer(Type[] allTypes, Container container)
{
RestServices = GetExports<IRestfulService>(allTypes);
+ WebSocketListeners = GetExports<IWebSocketListener>(allTypes);
}
/// <summary>
@@ -511,7 +516,11 @@ namespace MediaBrowser.Common.Kernel
Logger.Info("Composing instances of " + currentType.Name);
- return allTypes.Where(currentType.IsAssignableFrom).Select(Instantiate).Cast<T>().ToArray();
+ var parts = allTypes.Where(currentType.IsAssignableFrom).Select(Instantiate).Cast<T>().ToArray();
+
+ _disposableParts.AddRange(parts.OfType<IDisposable>());
+
+ return parts;
}
/// <summary>
@@ -528,6 +537,7 @@ namespace MediaBrowser.Common.Kernel
/// Composes the exported values.
/// </summary>
/// <param name="container">The container.</param>
+ /// <param name="iocContainer"></param>
protected virtual void ComposeExportedValues(CompositionContainer container, Container iocContainer)
{
container.ComposeExportedValue("logger", Logger);
@@ -733,6 +743,13 @@ namespace MediaBrowser.Common.Kernel
DisposeHttpManager();
DisposeComposableParts();
+
+ foreach (var part in _disposableParts)
+ {
+ part.Dispose();
+ }
+
+ _disposableParts.Clear();
}
}