public TSelfInterface WithCommandHandler(
     Func <TEntityDefinition, string> topicPatternSelector,
     Func <MqttCommandContext <TEntity, TEntityDefinition>, string, Task <bool> > commandProcessor)
 {
     CommandHandlers.Add(new DelegateCommandHandler <TEntity, TEntityDefinition>(topicPatternSelector, commandProcessor));
     return((TSelf)this);
 }
コード例 #2
0
        private void LookForCommandHandlers(ClassDeclarationSyntax node)
        {
            var handles = _cmdHandlerDeclarationVisitor.Visit(node);

            if (handles.Any())
            {
                CommandHandlers.Add(node);
            }
        }
コード例 #3
0
 /// <summary>
 /// Set the command handler for the given type
 /// </summary>
 /// <param name="func"></param>
 /// <typeparam name="TC2"></typeparam>
 /// <typeparam name="TR"></typeparam>
 /// <returns></returns>
 public IBehaviorBuilder <TC, TE, TS> SetCommandHandler <TC2, TR>(
     Func <TC2, ShardedEntity <TC, TE, TS> .ICommandContext <TC>, IPersist <TE> > func)
     where TC2 : IReplyType <TR>, TC
     where TR : class
 => new BehaviorBuilder <TC, TE, TS>(
     State,
     EventHandlers,
     CommandHandlers.Add(
         typeof(TC2),
         (ctx, e) =>
 {
     var d = func.Invoke((TC2)ctx, e);
     return(d);
 }
         )
     );
コード例 #4
0
 /// <summary>
 /// Set a readonly command handler for the given type
 /// (Readonly command does not impact entity state)
 /// </summary>
 /// <param name="func"></param>
 /// <typeparam name="TC2"></typeparam>
 /// <typeparam name="TR2"></typeparam>
 /// <returns></returns>
 public IBehaviorBuilder <TC, TE, TS> SetReadOnlyCommandHandler <TC2, TR2>
     (Action <TC2, IReadOnlyCommandContext> func)
     where TC2 : TC, IReplyType <TR2>
     where TR2 : class
 => new BehaviorBuilder <TC, TE, TS>(
     State,
     EventHandlers,
     CommandHandlers.Add(
         typeof(TC2),
         (ctx, e) =>
 {
     func.Invoke((TC2)ctx, e);
     return(e.Done());
 }
         )
     );
 public TSelfInterface WithCommandHandler(ICommandHandler <TEntity, TEntityDefinition> commandHandler)
 {
     CommandHandlers.Add(commandHandler);
     return((TSelf)this);
 }