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); }
private void LookForCommandHandlers(ClassDeclarationSyntax node) { var handles = _cmdHandlerDeclarationVisitor.Visit(node); if (handles.Any()) { CommandHandlers.Add(node); } }
/// <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); } ) );
/// <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); }