insight/src/Agent/Insight.Agent/Network/AgentSession.cs

56 lines
1.8 KiB
C#
Raw Normal View History

2023-09-21 22:10:55 +02:00
using Insight.Domain.Interfaces;
using Insight.Domain.Messages;
2023-09-21 18:58:32 +02:00
using Microsoft.Extensions.Logging;
using Vaitr.Network;
2023-09-21 22:10:55 +02:00
namespace Insight.Agent.Network;
public class AgentSession : TcpSession<IMessage>
2023-09-21 18:58:32 +02:00
{
2023-09-21 22:10:55 +02:00
private readonly IEnumerable<IMessageHandler<AgentSession>> _handlers;
public AgentSession(IEnumerable<IMessageHandler<AgentSession>> handlers, ISerializer<IMessage> serializer, ILogger<AgentSession> logger) : base(serializer, logger)
2023-09-21 18:58:32 +02:00
{
2023-09-21 22:10:55 +02:00
_handlers = handlers;
}
2023-09-21 18:58:32 +02:00
2023-09-21 22:10:55 +02:00
protected override ValueTask OnConnectedAsync(CancellationToken cancellationToken)
{
_logger.LogInformation("Agent ({ep?}) connected", RemoteEndPoint);
return default;
}
2023-09-21 18:58:32 +02:00
2023-09-21 22:10:55 +02:00
protected override ValueTask OnDisconnectedAsync(CancellationToken cancellationToken)
{
_logger.LogInformation("Agent ({ep?}) disconnected", RemoteEndPoint);
return default;
}
2023-09-21 18:58:32 +02:00
2023-09-21 22:10:55 +02:00
protected override ValueTask OnSentAsync(IPacketContext<IMessage> context, CancellationToken cancellationToken)
{
return base.OnSentAsync(context, cancellationToken);
}
2023-09-21 18:58:32 +02:00
2023-09-21 22:10:55 +02:00
protected override async ValueTask OnReceivedAsync(IPacketContext<IMessage> context, CancellationToken cancellationToken)
{
await base.OnReceivedAsync(context, cancellationToken);
2023-09-21 18:58:32 +02:00
2023-09-21 22:10:55 +02:00
foreach (var handler in _handlers)
2023-09-21 18:58:32 +02:00
{
2023-09-21 22:10:55 +02:00
try
2023-09-21 18:58:32 +02:00
{
2023-09-21 22:10:55 +02:00
await handler.HandleAsync(this, context.Packet, cancellationToken);
}
catch (Exception ex)
{
_logger.LogWarning("Agent ({ep?}) {ex}", RemoteEndPoint, ex.ToString());
2023-09-21 18:58:32 +02:00
}
}
2023-09-21 22:10:55 +02:00
}
2023-09-21 18:58:32 +02:00
2023-09-21 22:10:55 +02:00
protected override ValueTask OnHeartbeatAsync(CancellationToken cancellationToken)
{
_logger.LogInformation("Agent ({ep?}) Heartbeat", RemoteEndPoint);
return default;
2023-09-21 18:58:32 +02:00
}
}