Skip to content

Commit c3eb386

Browse files
authored
Merge pull request #3 from NiceOneFox/T3_Add_Buffer_Model
Close T3_Add_Buffer_Model
2 parents 1eab830 + 8c08c79 commit c3eb386

File tree

8 files changed

+98
-3
lines changed

8 files changed

+98
-3
lines changed

backend/ServiceSimulation/Bll.Domain/Bll.Domain.csproj

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88

99
<ItemGroup>
1010
<Folder Include="Entities\" />
11-
<Folder Include="Services\" />
1211
<Folder Include="Interfaces\" />
1312
</ItemGroup>
1413

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
using Bll.Domain.Factories;
2+
using Bll.Domain.Services;
3+
4+
namespace Bll.Domain.Entities;
5+
6+
public class Buffer : IBuffer
7+
{
8+
private readonly IBufferManager _bufferManager; // FACTORY DESIGN PATTERN?
9+
10+
public Buffer(IBufferManagerFactory bufferManager)
11+
{
12+
_bufferManager = bufferManager.CreateBufferManager();
13+
}
14+
15+
public void Push(Request request)
16+
{
17+
_bufferManager.Add(request);
18+
}
19+
20+
public Request? Pop()
21+
{
22+
return _bufferManager.Get();
23+
}
24+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
using Bll.Domain.Factories;
2+
using Bll.Domain.Services;
3+
4+
namespace Bll.Domain.Entities;
5+
6+
public class BufferManagerFactory : IBufferManagerFactory
7+
{
8+
public IBufferManager CreateBufferManager()
9+
{
10+
return new StandardBufferManager();
11+
}
12+
}
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
using Bll.Domain.Services;
2+
3+
namespace Bll.Domain.Entities;
4+
5+
public class StandardBufferManager : IBufferManager
6+
{
7+
public readonly LinkedList<Request> requests = new();
8+
9+
public const int Capacity = 5;
10+
11+
public void Add(Request request)
12+
{
13+
if (requests.Count >= Capacity)
14+
{
15+
var removedRequest = requests.Last();
16+
requests.RemoveLast();
17+
// TODO ADD ALL DELETED REQUESTS TO SOME LOGS OR SOURCE. variable removedRequest
18+
}
19+
20+
requests.AddFirst(request);
21+
}
22+
23+
public Request? Get()
24+
{
25+
if (requests.Count == 0)
26+
{
27+
return null; // TODO THROW EXCEPTION?
28+
}
29+
30+
var requestFromBuffer = requests.Last();
31+
requests.RemoveLast();
32+
33+
return requestFromBuffer;
34+
}
35+
36+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
using Bll.Domain.Services;
2+
3+
namespace Bll.Domain.Factories;
4+
5+
public interface IBufferManagerFactory
6+
{
7+
IBufferManager CreateBufferManager();
8+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
using Bll.Domain.Entities;
2+
3+
namespace Bll.Domain.Services;
4+
5+
public interface IBuffer
6+
{
7+
void Push(Request request);
8+
Request? Pop();
9+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
using Bll.Domain.Entities;
2+
3+
namespace Bll.Domain.Services;
4+
5+
public interface IBufferManager
6+
{
7+
void Add(Request request);
8+
Request? Get();
9+
}

backend/ServiceSimulation/Bll.Domain/Services/ISource.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,4 @@ namespace Bll.Domain.Services;
55
public interface ISource
66
{
77
Request GetNewRequest();
8-
9-
108
}

0 commit comments

Comments
 (0)