Browse Source

#1403 refactor singletons.

pull/1406/head
Halil İbrahim Kalkan 7 years ago
parent
commit
63baeaa874
  1. 3
      framework/src/Volo.Abp.BackgroundJobs/Volo/Abp/BackgroundJobs/BackgroundJobWorker.cs
  2. 2
      framework/src/Volo.Abp.BackgroundJobs/Volo/Abp/BackgroundJobs/DefaultBackgroundJobManager.cs
  3. 8
      framework/src/Volo.Abp.BackgroundWorkers/Volo/Abp/BackgroundWorkers/BackgroundWorkerManager.cs
  4. 5
      framework/src/Volo.Abp.BackgroundWorkers/Volo/Abp/BackgroundWorkers/IBackgroundWorker.cs
  5. 2
      framework/src/Volo.Abp.ObjectMapping/Volo/Abp/ObjectMapping/DefaultObjectMapper.cs
  6. 8
      framework/src/Volo.Abp.Threading/Volo/Abp/Linq/DefaultAsyncQueryableExecuter.cs
  7. 2
      framework/src/Volo.Abp.Threading/Volo/Abp/Threading/AbpThreadingModule.cs
  8. 12
      framework/src/Volo.Abp.VirtualFileSystem/Volo/Abp/VirtualFileSystem/DynamicFileProvider.cs

3
framework/src/Volo.Abp.BackgroundJobs/Volo/Abp/BackgroundJobs/BackgroundJobWorker.cs

@ -4,13 +4,12 @@ using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using Volo.Abp.BackgroundWorkers;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Threading;
using Volo.Abp.Timing;
namespace Volo.Abp.BackgroundJobs
{
public class BackgroundJobWorker : PeriodicBackgroundWorkerBase, IBackgroundJobWorker, ISingletonDependency
public class BackgroundJobWorker : PeriodicBackgroundWorkerBase, IBackgroundJobWorker
{
protected BackgroundJobOptions JobOptions { get; }

2
framework/src/Volo.Abp.BackgroundJobs/Volo/Abp/BackgroundJobs/DefaultBackgroundJobManager.cs

@ -10,7 +10,7 @@ namespace Volo.Abp.BackgroundJobs
/// Default implementation of <see cref="IBackgroundJobManager"/>.
/// </summary>
[Dependency(ReplaceServices = true)]
public class DefaultBackgroundJobManager : IBackgroundJobManager, ISingletonDependency
public class DefaultBackgroundJobManager : IBackgroundJobManager, ITransientDependency
{
protected IClock Clock { get; }
protected IBackgroundJobSerializer Serializer { get; }

8
framework/src/Volo.Abp.BackgroundWorkers/Volo/Abp/BackgroundWorkers/BackgroundWorkerManager.cs

@ -26,7 +26,7 @@ namespace Volo.Abp.BackgroundWorkers
_backgroundWorkers = new List<IBackgroundWorker>();
}
public void Add(IBackgroundWorker worker)
public virtual void Add(IBackgroundWorker worker)
{
_backgroundWorkers.Add(worker);
@ -36,7 +36,7 @@ namespace Volo.Abp.BackgroundWorkers
}
}
public void Dispose()
public virtual void Dispose()
{
if (_isDisposed)
{
@ -48,7 +48,7 @@ namespace Volo.Abp.BackgroundWorkers
//TODO: ???
}
public async Task StartAsync(CancellationToken cancellationToken = default)
public virtual async Task StartAsync(CancellationToken cancellationToken = default)
{
IsRunning = true;
@ -58,7 +58,7 @@ namespace Volo.Abp.BackgroundWorkers
}
}
public async Task StopAsync(CancellationToken cancellationToken = default)
public virtual async Task StopAsync(CancellationToken cancellationToken = default)
{
IsRunning = false;

5
framework/src/Volo.Abp.BackgroundWorkers/Volo/Abp/BackgroundWorkers/IBackgroundWorker.cs

@ -1,11 +1,12 @@
using Volo.Abp.Threading;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Threading;
namespace Volo.Abp.BackgroundWorkers
{
/// <summary>
/// Interface for a worker (thread) that runs on background to perform some tasks.
/// </summary>
public interface IBackgroundWorker : IRunnable
public interface IBackgroundWorker : IRunnable, ISingletonDependency
{
}

2
framework/src/Volo.Abp.ObjectMapping/Volo/Abp/ObjectMapping/DefaultObjectMapper.cs

@ -6,7 +6,7 @@ namespace Volo.Abp.ObjectMapping
{
//TODO: It can be slow to always check if service is available. Test it and optimize if necessary.
public class DefaultObjectMapper : IObjectMapper, ISingletonDependency
public class DefaultObjectMapper : IObjectMapper, ITransientDependency
{
private readonly IServiceProvider _serviceProvider;

8
framework/src/Volo.Abp.Threading/Volo/Abp/Linq/DefaultAsyncQueryableExecuter.cs

@ -2,14 +2,18 @@ using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using Volo.Abp.DependencyInjection;
namespace Volo.Abp.Linq
{
public class DefaultAsyncQueryableExecuter : IAsyncQueryableExecuter, ISingletonDependency
public class DefaultAsyncQueryableExecuter : IAsyncQueryableExecuter
{
public static DefaultAsyncQueryableExecuter Instance { get; } = new DefaultAsyncQueryableExecuter();
private DefaultAsyncQueryableExecuter()
{
}
public Task<int> CountAsync<T>(IQueryable<T> queryable)
{
return Task.FromResult(queryable.Count());

2
framework/src/Volo.Abp.Threading/Volo/Abp/Threading/AbpThreadingModule.cs

@ -1,4 +1,5 @@
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.Linq;
using Volo.Abp.Modularity;
namespace Volo.Abp.Threading
@ -7,6 +8,7 @@ namespace Volo.Abp.Threading
{
public override void ConfigureServices(ServiceConfigurationContext context)
{
context.Services.AddSingleton<IAsyncQueryableExecuter>(DefaultAsyncQueryableExecuter.Instance);
context.Services.AddSingleton<ICancellationTokenProvider>(NullCancellationTokenProvider.Instance);
context.Services.AddSingleton(typeof(IAmbientScopeProvider<>), typeof(AmbientDataContextAmbientScopeProvider<>));
}

12
framework/src/Volo.Abp.VirtualFileSystem/Volo/Abp/VirtualFileSystem/DynamicFileProvider.cs

@ -21,11 +21,11 @@ namespace Volo.Abp.VirtualFileSystem
protected ConcurrentDictionary<string, IFileInfo> DynamicFiles { get; }
private readonly ConcurrentDictionary<string, ChangeTokenInfo> _filePathTokenLookup =
new ConcurrentDictionary<string, ChangeTokenInfo>(StringComparer.OrdinalIgnoreCase);
protected ConcurrentDictionary<string, ChangeTokenInfo> FilePathTokenLookup { get; }
public DynamicFileProvider()
{
FilePathTokenLookup = new ConcurrentDictionary<string, ChangeTokenInfo>(StringComparer.OrdinalIgnoreCase);;
DynamicFiles = new ConcurrentDictionary<string, IFileInfo>();
}
@ -53,12 +53,12 @@ namespace Volo.Abp.VirtualFileSystem
private IChangeToken GetOrAddChangeToken(string filePath)
{
if (!_filePathTokenLookup.TryGetValue(filePath, out var tokenInfo))
if (!FilePathTokenLookup.TryGetValue(filePath, out var tokenInfo))
{
var cancellationTokenSource = new CancellationTokenSource();
var cancellationChangeToken = new CancellationChangeToken(cancellationTokenSource.Token);
tokenInfo = new ChangeTokenInfo(cancellationTokenSource, cancellationChangeToken);
tokenInfo = _filePathTokenLookup.GetOrAdd(filePath, tokenInfo);
tokenInfo = FilePathTokenLookup.GetOrAdd(filePath, tokenInfo);
}
return tokenInfo.ChangeToken;
@ -66,13 +66,13 @@ namespace Volo.Abp.VirtualFileSystem
private void ReportChange(string filePath)
{
if (_filePathTokenLookup.TryRemove(filePath, out var tokenInfo))
if (FilePathTokenLookup.TryRemove(filePath, out var tokenInfo))
{
tokenInfo.TokenSource.Cancel();
}
}
private struct ChangeTokenInfo
protected struct ChangeTokenInfo
{
public ChangeTokenInfo(
CancellationTokenSource tokenSource,

Loading…
Cancel
Save