diff options
Diffstat (limited to 'sync/engine/non_blocking_type_processor.cc')
-rw-r--r-- | sync/engine/non_blocking_type_processor.cc | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/sync/engine/non_blocking_type_processor.cc b/sync/engine/non_blocking_type_processor.cc index 0aaead4..c1982b3 100644 --- a/sync/engine/non_blocking_type_processor.cc +++ b/sync/engine/non_blocking_type_processor.cc @@ -51,7 +51,6 @@ void NonBlockingTypeProcessor::Enable( // TODO(rlarocque): At some point, this should be loaded from storage. data_type_state_.progress_marker.set_data_type_id( GetSpecificsFieldNumberFromModelType(type_)); - data_type_state_.next_client_id = 0; sync_core_proxy_ = sync_core_proxy.Pass(); sync_core_proxy_->ConnectTypeToCore(GetModelType(), @@ -142,6 +141,10 @@ void NonBlockingTypeProcessor::FlushPendingCommitRequests() { if (!IsConnected()) return; + // Don't send anything if the type is not ready to handle commits. + if (!data_type_state_.initial_sync_done) + return; + // TODO(rlarocque): Do something smarter than iterate here. for (EntityMap::iterator it = entities_.begin(); it != entities_.end(); ++it) { @@ -184,6 +187,9 @@ void NonBlockingTypeProcessor::OnCommitCompletion( void NonBlockingTypeProcessor::OnUpdateReceived( const DataTypeState& data_type_state, const UpdateResponseDataList& response_list) { + bool initial_sync_just_finished = + !data_type_state_.initial_sync_done && data_type_state.initial_sync_done; + data_type_state_ = data_type_state; for (UpdateResponseDataList::const_iterator list_it = response_list.begin(); @@ -215,6 +221,9 @@ void NonBlockingTypeProcessor::OnUpdateReceived( } } + if (initial_sync_just_finished) + FlushPendingCommitRequests(); + // TODO: Inform the model of the new or updated data. } |