GetSequence API in write batch.

Summary:
WriteBatch is now used by the GetUpdatesSinceAPI. This API is external
and will be used by the rocks server. Rocks Server and others will need
to know about the Sequence Number in the WriteBatch. This public method
will allow for that.

Test Plan: make all check.

Reviewers: dhruba

Reviewed By: dhruba

CC: leveldb

Differential Revision: https://reviews.facebook.net/D7293
This commit is contained in:
Abhishek Kona 2012-12-11 12:24:55 -08:00
parent d0a30935c6
commit 2ba866e0c5
4 changed files with 11 additions and 8 deletions

View File

@ -2284,8 +2284,8 @@ TEST(DBTest, TransactionLogIterator) {
SequenceNumber lastSequence = 0;
while (iter->Valid()) {
WriteBatch batch;
iter->GetBatch(&batch);
SequenceNumber current = WriteBatchInternal::Sequence(&batch);
SequenceNumber current;
iter->GetBatch(&batch, &current);
ASSERT_TRUE(current > lastSequence);
++i;
lastSequence = current;
@ -2310,8 +2310,8 @@ TEST(DBTest, TransactionLogIterator) {
SequenceNumber lastSequence = 0;
while (iter->Valid()) {
WriteBatch batch;
iter->GetBatch(&batch);
SequenceNumber current = WriteBatchInternal::Sequence(&batch);
SequenceNumber current;
iter->GetBatch(&batch, &current);
ASSERT_TRUE(current > lastSequence);
lastSequence = current;
ASSERT_TRUE(iter->status().ok());

View File

@ -51,9 +51,11 @@ Status TransactionLogIteratorImpl::OpenLogFile(const LogFile& logFile,
}
}
void TransactionLogIteratorImpl::GetBatch(WriteBatch* batch) {
void TransactionLogIteratorImpl::GetBatch(WriteBatch* batch,
SequenceNumber* seq) {
assert(isValid_); // cannot call in a non valid state.
WriteBatchInternal::SetContents(batch, currentRecord_);
*seq = WriteBatchInternal::Sequence(batch);
}
Status TransactionLogIteratorImpl::status() {

View File

@ -43,7 +43,7 @@ class TransactionLogIteratorImpl : public TransactionLogIterator {
virtual Status status();
virtual void GetBatch(WriteBatch* batch);
virtual void GetBatch(WriteBatch* batch, SequenceNumber* seq);
private:
const std::string& dbname_;

View File

@ -26,8 +26,9 @@ class TransactionLogIterator {
// Return the Error Status when the iterator is not Valid.
virtual Status status() = 0;
// If valid return's the current write_batch.
virtual void GetBatch(WriteBatch* batch) = 0;
// If valid return's the current write_batch and the sequence number of the
// latest transaction contained in the batch.
virtual void GetBatch(WriteBatch* batch, SequenceNumber* seq) = 0;
};
} // namespace leveldb