Files
InServiceQue/InServiceQue.InMemory/TaskRepositoryInMemory.cs
2024-03-10 00:43:57 +07:00

82 lines
1.7 KiB
C#

using System.Collections.Concurrent;
using System.Data;
using InServiceQue.Core.Models;
using InServiceQue.Core.Repositories;
namespace InServiceQue.InMemory;
public class TaskRepositoryInMemory: ITaskRepository
{
private static ConcurrentQueue<QueueTask> _que = new();
public void Dispose()
{
// TODO release managed resources here
}
public void Insert(QueueTask task)
{
_que.Enqueue(task);
}
public async Task InsertAsync(QueueTask task)
{
Insert(task);
await Task.CompletedTask;
}
public IDbTransaction StartTransaction()
{
return null;
}
public async Task<IDbTransaction> StartTransactionAsync()
{
return await Task.FromResult<IDbTransaction>(null);
}
public void CommitTransaction(IDbTransaction tx)
{
}
public async Task CommitTransactionAsync(IDbTransaction tx)
{
await Task.CompletedTask;
}
public void RollbackTransaction(IDbTransaction tx)
{
}
public async Task RollbackTransactionAsync(IDbTransaction tx)
{
await Task.CompletedTask;
}
public QueueTask? GetNextTask(IDbTransaction tx)
{
QueueTask? task;
_que.TryDequeue(out task);
return task;
}
public async Task<QueueTask?> GetNextTaskAsync(IDbTransaction tx)
{
QueueTask? task = null;
_que.TryDequeue(out task);
return await Task.FromResult(task);
}
public void SaveTask(QueueTask task, IDbTransaction tx)
{
}
public async Task SaveTaskAsync(QueueTask task, IDbTransaction tx)
{
await Task.CompletedTask;
}
}