From 6a5bf9cc780c6cd878be4c5111d64226208f0597 Mon Sep 17 00:00:00 2001 From: LukePulverenti Date: Fri, 22 Feb 2013 19:44:20 -0500 Subject: extracted more interfaces --- MediaBrowser.Common/Kernel/BaseKernel.cs | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) (limited to 'MediaBrowser.Common/Kernel/BaseKernel.cs') 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. /// /// The web socket listeners. - [ImportMany(typeof(IWebSocketListener))] public IEnumerable WebSocketListeners { get; private set; } /// @@ -236,6 +235,11 @@ namespace MediaBrowser.Common.Kernel /// The rest services. public IEnumerable RestServices { get; private set; } + /// + /// The disposable parts + /// + private readonly List _disposableParts = new List(); + /// /// The _protobuf serializer initialized /// @@ -497,6 +501,7 @@ namespace MediaBrowser.Common.Kernel protected virtual void ComposePartsWithIocContainer(Type[] allTypes, Container container) { RestServices = GetExports(allTypes); + WebSocketListeners = GetExports(allTypes); } /// @@ -511,7 +516,11 @@ namespace MediaBrowser.Common.Kernel Logger.Info("Composing instances of " + currentType.Name); - return allTypes.Where(currentType.IsAssignableFrom).Select(Instantiate).Cast().ToArray(); + var parts = allTypes.Where(currentType.IsAssignableFrom).Select(Instantiate).Cast().ToArray(); + + _disposableParts.AddRange(parts.OfType()); + + return parts; } /// @@ -528,6 +537,7 @@ namespace MediaBrowser.Common.Kernel /// Composes the exported values. /// /// The container. + /// 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(); } } -- cgit v1.2.3