blob: d44591d79d852da92acded66ea8ac35475bec1f7 [file] [log] [blame]
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "sync/sessions/sync_session_context.h"
#include "sync/sessions/debug_info_getter.h"
#include "sync/util/extensions_activity.h"
namespace syncer {
namespace sessions {
SyncSessionContext::SyncSessionContext(
ServerConnectionManager* connection_manager,
syncable::Directory* directory,
const std::vector<ModelSafeWorker*>& workers,
ExtensionsActivity* extensions_activity,
const std::vector<SyncEngineEventListener*>& listeners,
DebugInfoGetter* debug_info_getter,
TrafficRecorder* traffic_recorder,
bool keystore_encryption_enabled,
bool client_enabled_pre_commit_update_avoidance,
const std::string& invalidator_client_id)
: connection_manager_(connection_manager),
directory_(directory),
update_handler_deleter_(&update_handler_map_),
commit_contributor_deleter_(&commit_contributor_map_),
extensions_activity_(extensions_activity),
notifications_enabled_(false),
max_commit_batch_size_(kDefaultMaxCommitBatchSize),
debug_info_getter_(debug_info_getter),
traffic_recorder_(traffic_recorder),
keystore_encryption_enabled_(keystore_encryption_enabled),
invalidator_client_id_(invalidator_client_id),
server_enabled_pre_commit_update_avoidance_(false),
client_enabled_pre_commit_update_avoidance_(
client_enabled_pre_commit_update_avoidance) {
for (size_t i = 0u; i < workers.size(); ++i)
workers_.push_back(workers[i]);
std::vector<SyncEngineEventListener*>::const_iterator it;
for (it = listeners.begin(); it != listeners.end(); ++it)
listeners_.AddObserver(*it);
}
SyncSessionContext::~SyncSessionContext() {
}
void SyncSessionContext::set_routing_info(
const ModelSafeRoutingInfo& routing_info) {
routing_info_ = routing_info;
// TODO(rlarocque): This is not a good long-term solution. We must find a
// better way to initialize the set of CommitContributors and UpdateHandlers.
ModelTypeSet enabled_types = GetRoutingInfoTypes(routing_info);
STLDeleteValues<CommitContributorMap>(&commit_contributor_map_);
for (ModelTypeSet::Iterator it = enabled_types.First(); it.Good(); it.Inc()) {
SyncDirectoryCommitContributor* contributor =
new SyncDirectoryCommitContributor(directory(), it.Get());
commit_contributor_map_.insert(std::make_pair(it.Get(), contributor));
}
STLDeleteValues<UpdateHandlerMap>(&update_handler_map_);
for (ModelTypeSet::Iterator it = enabled_types.First(); it.Good(); it.Inc()) {
SyncDirectoryUpdateHandler* handler =
new SyncDirectoryUpdateHandler(directory(), it.Get());
update_handler_map_.insert(std::make_pair(it.Get(), handler));
}
}
} // namespace sessions
} // namespace syncer