示例#1
0
    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);
    }
示例#2
0
    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));
    }
示例#3
0
    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));
    }
示例#4
0
 public CommandSubmission(CommandSubmission <TSpec> src)
     : base(src)
 {
     this.subid = src.subid;
     this.ts    = src.ts;
 }
示例#5
0
 public CommandDispatch(CommandSubmission <TSpec> src, DateTime?ts = null)
     : base(src)
 {
     this.ts = ts ?? now();
 }
示例#6
0
 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)));