Skip to content

Commit ce43814

Browse files
committed
Encapsulate router
1 parent ca76d62 commit ce43814

7 files changed

Lines changed: 36 additions & 24 deletions

File tree

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
namespace LiteHttp.Routing;
2+
3+
public interface IRouter
4+
{
5+
public Func<IActionResult>? GetAction(HttpContext context);
6+
}

src/Server/Infrastructure/Routing/src/LiteHttp/Routing/Router.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
namespace LiteHttp.Routing;
22

3-
public sealed class Router
3+
internal sealed class Router : IRouter
44
{
55
private IEndpointContext? _endpointContext;
66

7-
public Func<IActionResult>? GetAction(in HttpContext context) =>
7+
public Func<IActionResult>? GetAction(HttpContext context) =>
88
_endpointContext?.EndpointProvider.GetEndpoint(context.Route, context.Method);
99

1010
public void SetContext(IEndpointContext endpointContext) =>

src/Server/Infrastructure/Routing/src/LiteHttp/Routing/RouterEventAdapter.cs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,9 @@
33
#nullable disable
44
public sealed class RouterEventAdapter
55
{
6-
private readonly Router _router;
6+
private readonly IRouter _router;
77

8-
public RouterEventAdapter() => _router = new();
9-
10-
public RouterEventAdapter(Router router) => _router = router;
8+
public RouterEventAdapter(IRouter router) => _router = router;
119

1210
public void Handle(ConnectionContext connectionContext)
1311
{
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
namespace LiteHttp.Routing;
2+
3+
public sealed class RouterFactory
4+
{
5+
public static IRouter Build(IEndpointContext context)
6+
{
7+
var router = new Router();
8+
9+
router.SetContext(context);
10+
11+
return router;
12+
}
13+
}

src/Server/Infrastructure/Server/src/LiteHttp/Server/EventDriven/InternalServer.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,7 @@ public InternalServer(ILogger? logger, IPAddress address, int port)
3232

3333
EndpointProviderConfiguration = new EndpointProviderConfiguration();
3434

35-
var router = new Router();
36-
router.SetContext(EndpointProviderConfiguration.EndpointContext);
35+
var router = RouterFactory.Build(EndpointProviderConfiguration.EndpointContext);
3736

3837
RouterAdapter = new(router);
3938

src/Server/Infrastructure/WorkerServices/src/LiteHttp/WorkerServices/RequestProcessor.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
/// </summary>
88
internal sealed class RequestProcessor : IDisposable, IRequestProcessor
99
{
10-
private readonly Router _router = new();
10+
private readonly IRouter _router;
1111
private readonly Parser _parser = Parser.Instance;
1212
private readonly ResponseBuilder _responseBuilder = new();
1313
private readonly ILogger<RequestProcessor> _logger;
@@ -21,7 +21,7 @@ internal sealed class RequestProcessor : IDisposable, IRequestProcessor
2121
/// <param name="logger">Logger used by whole app.</param>
2222
public RequestProcessor(IEndpointContext endpointContext, string address, int port, ILogger logger)
2323
{
24-
_router.SetContext(endpointContext);
24+
_router = RouterFactory.Build(endpointContext);
2525
_logger = logger.ForContext<RequestProcessor>();
2626

2727
_responseBuilder.Address = address;

src/Server/Infrastructure/WorkerServices/src/LiteHttp/WorkerServices/ServerWorker.cs

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,21 @@
44
public sealed class ServerWorker : IServerWorker, IDisposable
55
{
66
private readonly Responder _responder = Responder.Instance;
7-
private readonly Router _router = new();
7+
private readonly IRouter _router;
88
private readonly Parser _parser = Parser.Instance;
99
private readonly Receiver _receiver = Receiver.Instance;
1010
private readonly ResponseBuilder _responseBuilder = new();
11-
12-
private ILogger<ServerWorker> _logger = NullLogger<ServerWorker>.Instance;
11+
private readonly ILogger<ServerWorker> _logger;
1312
// TODO: refactor to handle large requests and prevent unexpected errors
1413

15-
public ServerWorker(IEndpointContext endpointContext, string address, int port, ILogger logger) =>
16-
Initialize(endpointContext: endpointContext, logger: logger, port: port, address: address);
14+
public ServerWorker(IEndpointContext endpointContext, string address, int port, ILogger logger)
15+
{
16+
_router = RouterFactory.Build(endpointContext);
17+
_logger = logger.ForContext<ServerWorker>();
18+
19+
_responseBuilder.Address = address;
20+
_responseBuilder.Port = port;
21+
}
1722

1823
public void SetHostPort(int port) =>
1924
_responseBuilder.Port = port;
@@ -83,13 +88,4 @@ private async ValueTask SendResponseAndDisposeConnection(Socket connection, Read
8388
connection.Close();
8489
connection.Dispose();
8590
}
86-
87-
private void Initialize(IEndpointContext endpointContext, ILogger logger, int port, string address)
88-
{
89-
_router.SetContext(endpointContext);
90-
_logger = logger.ForContext<ServerWorker>();
91-
92-
_responseBuilder.Address = address;
93-
_responseBuilder.Port = port;
94-
}
9591
}

0 commit comments

Comments
 (0)