public static MessageHandler CreateCommandHandler()

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));
        }