public override bool Replay() { bool rc = true; try { Execute(); ///////////////////////////// //receive expected results foreach (var queuedCommand in QueuedCommands) { queuedCommand.ProcessResult(); } } catch (RedisTransactionFailedException) { rc = false; } finally { RedisClient.Transaction = null; ClosePipeline(); RedisClient.AddTypeIdsRegisteredDuringPipeline(); } return(rc); }
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) { rc = false; } finally { RedisClient.Transaction = null; ClosePipeline(); RedisClient.AddTypeIdsRegisteredDuringPipeline(); } return(rc); }
internal void AddTypeIdsRegisteredDuringPipeline() { client.AddTypeIdsRegisteredDuringPipeline(); }