protected void Execute() { int count = QueuedCommands.Count; for (int i = 0; i < count; ++i) { var op = QueuedCommands[0]; QueuedCommands.RemoveAt(0); op.Execute(RedisClient); QueuedCommands.Add(op); } }
public bool Commit() { bool rc = true; try { _numCommands = QueuedCommands.Count / 2; //insert multi command at beginning QueuedCommands.Insert(0, new QueuedRedisCommand() { VoidReturnCommand = r => Init(), VoidReadCommand = RedisClient.ExpectOk, }); //the first half of the responses will be "QUEUED", // so insert reading of multiline after these responses QueuedCommands.Insert(_numCommands + 1, new QueuedRedisOperation() { IntReadCommand = RedisClient.ReadMultiDataResultCount, OnSuccessIntCallback = handleMultiDataResultCount }); // add Exec command at end (not queued) QueuedCommands.Add(new RedisCommand() { VoidReturnCommand = r => Exec() }); //execute transaction Exec(); ///////////////////////////// //receive expected results foreach (var queuedCommand in QueuedCommands) { queuedCommand.ProcessResult(); } } catch (RedisTransactionFailedException e) { rc = false; } finally { RedisClient.Transaction = null; ClosePipeline(); RedisClient.AddTypeIdsRegisteredDuringPipeline(); } return(rc); }
protected async ValueTask ExecuteAsync() { int count = QueuedCommands.Count; for (int i = 0; i < count; ++i) { var op = QueuedCommands[0]; QueuedCommands.RemoveAt(0); await op.ExecuteAsync(RedisClient).ConfigureAwait(false); QueuedCommands.Add(op); } }
public override void QueueCommands(List <Command> commands) { QueuedCommands.Add(ConvertCommand(commands)); }
public override void QueueCommands(List <Command> commands) { QueuedCommands.Add($"addCommand(\"{ConvertCommand(commands)}\");"); }