2023-11-21 20:37:50 +00:00
|
|
|
// Copyright (c) 2023 Timothy Schenk. Subject to the GNU AGPL Version 3 License.
|
2023-11-20 18:58:30 +00:00
|
|
|
|
2024-01-29 07:39:18 +00:00
|
|
|
using Continuity.AuthServer.Packets;
|
2024-02-05 08:16:42 +00:00
|
|
|
using JetBrains.Annotations;
|
2023-08-12 21:02:59 +00:00
|
|
|
using MassTransit;
|
2024-02-05 10:43:58 +00:00
|
|
|
using OpenTelemetry.Trace;
|
2024-02-04 18:52:45 +00:00
|
|
|
using Rai.PacketMediator;
|
|
|
|
using Wonderking.Packets;
|
2023-11-19 16:07:28 +00:00
|
|
|
|
2024-01-29 07:39:18 +00:00
|
|
|
namespace Continuity.AuthServer.Consumers;
|
2023-08-09 14:23:41 +00:00
|
|
|
|
2024-02-05 08:16:42 +00:00
|
|
|
[UsedImplicitly]
|
2023-08-09 18:14:14 +00:00
|
|
|
public class PacketConsumer : IConsumer<RawPacket>
|
2023-08-09 14:23:41 +00:00
|
|
|
{
|
2024-02-05 17:12:12 +00:00
|
|
|
private readonly PacketDistributorService<OperationCode, AuthSession> _distributorService;
|
2023-08-09 14:23:41 +00:00
|
|
|
|
2024-02-05 10:43:58 +00:00
|
|
|
private readonly TracerProvider _tracerProvider;
|
|
|
|
|
2024-02-05 17:12:12 +00:00
|
|
|
public PacketConsumer(PacketDistributorService<OperationCode, AuthSession> distributorService, TracerProvider tracerProvider)
|
2023-11-19 16:07:28 +00:00
|
|
|
{
|
|
|
|
_distributorService = distributorService;
|
2024-02-05 10:43:58 +00:00
|
|
|
_tracerProvider = tracerProvider;
|
2023-11-19 16:07:28 +00:00
|
|
|
}
|
2023-08-09 14:23:41 +00:00
|
|
|
|
2023-08-09 18:14:14 +00:00
|
|
|
public Task Consume(ConsumeContext<RawPacket> context)
|
2023-08-09 14:23:41 +00:00
|
|
|
{
|
2024-02-05 10:43:58 +00:00
|
|
|
var tracer = _tracerProvider.GetTracer("Rai.PacketMediator");
|
|
|
|
|
|
|
|
using var scope = tracer.StartActiveSpan("PacketHandler");
|
|
|
|
scope.SetAttribute("PacketId", context.Message.OperationCode.ToString());
|
|
|
|
scope.SetAttribute("SessionId", context.Message.Session.Id.ToString());
|
|
|
|
scope.SetAttribute("PacketSize", context.Message.MessageBody.Length);
|
|
|
|
|
|
|
|
return _distributorService.AddPacketAsync(context.Message.MessageBody, context.Message.OperationCode, context.Message.Session);
|
2023-08-09 14:23:41 +00:00
|
|
|
}
|
2023-08-11 09:31:30 +00:00
|
|
|
}
|