diff options
| author | LukePulverenti <luke.pulverenti@gmail.com> | 2013-02-22 19:44:20 -0500 |
|---|---|---|
| committer | LukePulverenti <luke.pulverenti@gmail.com> | 2013-02-22 19:44:20 -0500 |
| commit | 6a5bf9cc780c6cd878be4c5111d64226208f0597 (patch) | |
| tree | 21261a5a0743410d3537eb17dbd8d5967684e34f /MediaBrowser.Common/Kernel/BaseKernel.cs | |
| parent | 881bf8b9cbccb1c669489b7470906c314893d760 (diff) | |
extracted more interfaces
Diffstat (limited to 'MediaBrowser.Common/Kernel/BaseKernel.cs')
| -rw-r--r-- | MediaBrowser.Common/Kernel/BaseKernel.cs | 21 |
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(); } } |
