add optional old_seq field in SyncState
diff --git a/src/sync-log.cc b/src/sync-log.cc
index 1e17957..eb421a9 100644
--- a/src/sync-log.cc
+++ b/src/sync-log.cc
@@ -304,13 +304,13 @@
}
SyncStateMsgPtr
-SyncLog::FindStateDifferences (const std::string &oldHash, const std::string &newHash)
+SyncLog::FindStateDifferences (const std::string &oldHash, const std::string &newHash, bool includeOldSeq)
{
- return FindStateDifferences (*Hash::FromString (oldHash), *Hash::FromString (newHash));
+ return FindStateDifferences (*Hash::FromString (oldHash), *Hash::FromString (newHash), includeOldSeq);
}
SyncStateMsgPtr
-SyncLog::FindStateDifferences (const Hash &oldHash, const Hash &newHash)
+SyncLog::FindStateDifferences (const Hash &oldHash, const Hash &newHash, bool includeOldSeq)
{
sqlite3_stmt *stmt;
@@ -370,6 +370,7 @@
{
SyncState *state = msg->add_state ();
+ // set name
state->set_name (reinterpret_cast<const char*> (sqlite3_column_blob (stmt, 0)), sqlite3_column_bytes (stmt, 0));
// locator is optional, so must check if it is null
@@ -378,6 +379,23 @@
state->set_locator (reinterpret_cast<const char*> (sqlite3_column_blob (stmt, 1)), sqlite3_column_bytes (stmt, 1));
}
+ // set old seq
+ if (includeOldSeq)
+ {
+ if (sqlite3_column_type (stmt, 2) == SQLITE_NULL)
+ {
+ // old seq is zero; we always have an initial action of zero seq
+ // other's do not need to fetch this action
+ state->set_old_seq(0);
+ }
+ else
+ {
+ sqlite3_int64 oldSeqNo = sqlite3_column_int64 (stmt, 2);
+ state->set_old_seq(oldSeqNo);
+ }
+ }
+
+ // set new seq
if (sqlite3_column_type (stmt, 3) == SQLITE_NULL)
{
state->set_type (SyncState::DELETE);