docker files fixes from liaqat
This commit is contained in:
75
src/Managing.Domain/Bots/Bot.cs
Normal file
75
src/Managing.Domain/Bots/Bot.cs
Normal file
@@ -0,0 +1,75 @@
|
||||
using static Managing.Common.Enums;
|
||||
|
||||
namespace Managing.Domain.Bots
|
||||
{
|
||||
/// <summary>
|
||||
/// A bot define what code should be run.
|
||||
/// To run a code you have to herit from this class and implement the Run() method
|
||||
/// </summary>
|
||||
public abstract class Bot : IBot
|
||||
{
|
||||
public int ExecutionCount;
|
||||
public string Identifier { get; set; }
|
||||
public string Name { get; set; }
|
||||
public int Interval { get; set; }
|
||||
public BotStatus Status { get; set; }
|
||||
private CancellationTokenSource CancellationToken { get; set; }
|
||||
|
||||
public Bot(string name)
|
||||
{
|
||||
Identifier = $"{name}-{DateTime.Now:yyyyMMdd-hhmm}-{Guid.NewGuid()}";
|
||||
Name = name;
|
||||
Status = BotStatus.Down;
|
||||
CancellationToken = new CancellationTokenSource();
|
||||
ExecutionCount = 0;
|
||||
}
|
||||
|
||||
public virtual void Start()
|
||||
{
|
||||
Status = BotStatus.Up;
|
||||
}
|
||||
|
||||
public async Task InitWorker(Func<Task> action)
|
||||
{
|
||||
await Task.Run(async () =>
|
||||
{
|
||||
while (Status == BotStatus.Up)
|
||||
{
|
||||
try
|
||||
{
|
||||
await action();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine(ex.Message);
|
||||
}
|
||||
ExecutionCount++;
|
||||
await Task.Delay(Interval, CancellationToken.Token);
|
||||
if (CancellationToken.IsCancellationRequested)
|
||||
break;
|
||||
}
|
||||
}, CancellationToken.Token);
|
||||
}
|
||||
|
||||
public void Stop()
|
||||
{
|
||||
Status = BotStatus.Down;
|
||||
//CancellationToken.Cancel();
|
||||
}
|
||||
|
||||
public void Restart()
|
||||
{
|
||||
Status = BotStatus.Up;
|
||||
}
|
||||
|
||||
public string GetStatus()
|
||||
{
|
||||
return Status.ToString();
|
||||
}
|
||||
|
||||
public string GetName()
|
||||
{
|
||||
return Name;
|
||||
}
|
||||
}
|
||||
}
|
||||
12
src/Managing.Domain/Bots/IBot.cs
Normal file
12
src/Managing.Domain/Bots/IBot.cs
Normal file
@@ -0,0 +1,12 @@
|
||||
namespace Managing.Domain.Bots
|
||||
{
|
||||
public interface IBot
|
||||
{
|
||||
string Name { get; set; }
|
||||
void Start();
|
||||
void Stop();
|
||||
void Restart();
|
||||
string GetStatus();
|
||||
string GetName();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user