diff options
Diffstat (limited to 'MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs')
| -rw-r--r-- | MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs | 31 |
1 files changed, 30 insertions, 1 deletions
diff --git a/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs b/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs index cd7928290..3ffe31ed1 100644 --- a/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs +++ b/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs @@ -1,7 +1,6 @@ using MediaBrowser.Common.Configuration; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Persistence; -using MediaBrowser.Controller.Providers; using MediaBrowser.Model.Entities; using MediaBrowser.Model.Logging; using MediaBrowser.Model.Serialization; @@ -204,6 +203,8 @@ namespace MediaBrowser.Server.Implementations.Persistence cancellationToken.ThrowIfCancellationRequested(); + CheckDisposed(); + await _writeLock.WaitAsync(cancellationToken).ConfigureAwait(false); IDbTransaction transaction = null; @@ -272,6 +273,8 @@ namespace MediaBrowser.Server.Implementations.Persistence throw new ArgumentNullException("id"); } + CheckDisposed(); + using (var cmd = _connection.CreateCommand()) { cmd.CommandText = "select type,data from TypedBaseItems where guid = @guid"; @@ -356,6 +359,7 @@ namespace MediaBrowser.Server.Implementations.Persistence /// <exception cref="System.ArgumentNullException">id</exception> public IEnumerable<ChapterInfo> GetChapters(Guid id) { + CheckDisposed(); return _chapterRepository.GetChapters(id); } @@ -368,6 +372,7 @@ namespace MediaBrowser.Server.Implementations.Persistence /// <exception cref="System.ArgumentNullException">id</exception> public ChapterInfo GetChapter(Guid id, int index) { + CheckDisposed(); return _chapterRepository.GetChapter(id, index); } @@ -387,6 +392,7 @@ namespace MediaBrowser.Server.Implementations.Persistence /// </exception> public Task SaveChapters(Guid id, IEnumerable<ChapterInfo> chapters, CancellationToken cancellationToken) { + CheckDisposed(); return _chapterRepository.SaveChapters(id, chapters, cancellationToken); } @@ -401,6 +407,15 @@ namespace MediaBrowser.Server.Implementations.Persistence private readonly object _disposeLock = new object(); + private bool _disposed; + private void CheckDisposed() + { + if (_disposed) + { + throw new ObjectDisposedException(GetType().Name + " has been disposed and cannot be accessed."); + } + } + /// <summary> /// Releases unmanaged and - optionally - managed resources. /// </summary> @@ -409,6 +424,8 @@ namespace MediaBrowser.Server.Implementations.Persistence { if (dispose) { + _disposed = true; + try { lock (_disposeLock) @@ -457,6 +474,8 @@ namespace MediaBrowser.Server.Implementations.Persistence throw new ArgumentNullException("parentId"); } + CheckDisposed(); + using (var cmd = _connection.CreateCommand()) { cmd.CommandText = "select ItemId from ChildrenIds where ParentId = @ParentId"; @@ -480,6 +499,8 @@ namespace MediaBrowser.Server.Implementations.Persistence throw new ArgumentNullException("parentId"); } + CheckDisposed(); + using (var cmd = _connection.CreateCommand()) { cmd.CommandText = "select type,data from TypedBaseItems where guid in (select ItemId from ChildrenIds where ParentId = @ParentId)"; @@ -508,6 +529,8 @@ namespace MediaBrowser.Server.Implementations.Persistence throw new ArgumentNullException("type"); } + CheckDisposed(); + using (var cmd = _connection.CreateCommand()) { cmd.CommandText = "select type,data from TypedBaseItems where type = @type"; @@ -536,6 +559,8 @@ namespace MediaBrowser.Server.Implementations.Persistence throw new ArgumentNullException("id"); } + CheckDisposed(); + await _writeLock.WaitAsync(cancellationToken).ConfigureAwait(false); IDbTransaction transaction = null; @@ -599,6 +624,8 @@ namespace MediaBrowser.Server.Implementations.Persistence throw new ArgumentNullException("children"); } + CheckDisposed(); + await _writeLock.WaitAsync(cancellationToken).ConfigureAwait(false); IDbTransaction transaction = null; @@ -660,11 +687,13 @@ namespace MediaBrowser.Server.Implementations.Persistence public IEnumerable<MediaStream> GetMediaStreams(MediaStreamQuery query) { + CheckDisposed(); return _mediaStreamsRepository.GetMediaStreams(query); } public Task SaveMediaStreams(Guid id, IEnumerable<MediaStream> streams, CancellationToken cancellationToken) { + CheckDisposed(); return _mediaStreamsRepository.SaveMediaStreams(id, streams, cancellationToken); } } |
