public CommandSubmission Submit(ICommandSpec command, CorrelationToken?ct) { var submission = new CommandSubmission(command, NextSubmissionId(), C.Service <IJsonSerializer>().ObjectToJson(command), ct, now()); SubmissionQueue.Enqueue(submission); return(submission); }
public CommandResult Execute(ICommandSpec command) { var json = Serializer.Encode(command); var submission = new CommandSubmission(command, increment(ref cmdid), json); var dispatch = new CommandDispatch(submission); return(Execute(dispatch)); }
Option <ReadOnlyList <CommandSubmission <TSpec> > > ICommandSubmitter.Submit <TSpec>(IEnumerable <TSpec> commands, SystemNode target, CorrelationToken?ct) { var submissions = MutableList.Create <CommandSubmission <TSpec> >(); foreach (var command in commands) { var submission = CommandSubmission.Create(command, NextSubmissionId(), C.Service <IJsonSerializer>().ObjectToJson(command), ct, now()); SubmissionQueue.Enqueue(submission); submissions.Add(submission); } return(ReadOnlyList.Create(submissions)); }
public CommandSubmission(CommandSubmission <TSpec> src) : base(src) { this.subid = src.subid; this.ts = src.ts; }
public CommandDispatch(CommandSubmission <TSpec> src, DateTime?ts = null) : base(src) { this.ts = ts ?? now(); }
Option <ReadOnlyList <CommandSubmission <TSpec> > > ICommandQueue <TSpec> .Enqueue(IEnumerable <TSpec> commands, SystemNode target, CorrelationToken?ct) => Enqueue(commands, target, ct) .Map(x => x.Map(y => CommandSubmission.Create(y.Spec, y.SubmissionId, y.CommandJson, y.CorrelationToken, y.EnqueuedTime)));