in src/Libs/Common/Redis/MessageHandler.cs [21:48]
public static MessageHandler CreateCommandHandler(string? role, string command, Func<CommandMessage, Task> handler) =>
new CommandHandler(role, command, handler);
public static MessageHandler CreateCommandHandler(string command, Func<CommandMessage, Task> handler) =>
new CommandHandler(null, command, handler);
public static MessageHandler CreateAckHandler(string command, Func<AckMessage, Task> handler) =>
new AckHandler(command, handler);
private sealed class CommandHandler : MessageHandler
{
private readonly Func<CommandMessage, Task> _handler;
public CommandHandler(string? role, string name, Func<CommandMessage, Task> handler)
{
Role = role;
Command = name;
_handler = handler;
}
public override string? Role { get; }
public override string Command { get; }
public override MessageType Type => MessageType.Command;
public override Task Handle(string text) => _handler(JsonConvert.DeserializeObject<CommandMessage>(text));
}