using Kean.Domain.Message.Commands; using Kean.Domain.Message.Repositories; using Kean.Domain.Message.SharedServices.Proxies; using System.Threading; using System.Threading.Tasks; namespace Kean.Domain.Message.CommandHandlers { /// /// 断线命令处理程序 /// public sealed class DisconnectCommandHandler : CommandHandler { private readonly IMessageRepository _messageRepository; // 消息仓库 private readonly IdentityProxy _identityProxy;// 身份域代理 /// /// 依赖注入 /// public DisconnectCommandHandler( IMessageRepository messageRepository, IdentityProxy identityProxy) { _messageRepository = messageRepository; _identityProxy = identityProxy; } /// /// 处理程序 /// public override async Task Handle(DisconnectCommand command, CancellationToken cancellationToken) { if (command.ValidationResult.IsValid) { var session = await _identityProxy.GetSession(command.Token); await _messageRepository.UnregisterConnection(session, command.Id); } } } }