1// Copyright 2014 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "sync/internal_api/sync_core_proxy_impl.h"
6
7#include "base/bind.h"
8#include "base/location.h"
9#include "base/message_loop/message_loop_proxy.h"
10#include "sync/engine/non_blocking_sync_common.h"
11#include "sync/internal_api/sync_core.h"
12
13namespace syncer {
14
15SyncCoreProxyImpl::SyncCoreProxyImpl(
16    scoped_refptr<base::SequencedTaskRunner> sync_task_runner,
17    base::WeakPtr<SyncCore> sync_core)
18    : sync_task_runner_(sync_task_runner),
19      sync_core_(sync_core) {}
20
21SyncCoreProxyImpl::~SyncCoreProxyImpl() {}
22
23void SyncCoreProxyImpl::ConnectTypeToCore(
24    ModelType type,
25    const DataTypeState& data_type_state,
26    base::WeakPtr<NonBlockingTypeProcessor> type_processor) {
27  VLOG(1) << "ConnectTypeToCore: " << ModelTypeToString(type);
28  sync_task_runner_->PostTask(FROM_HERE,
29                              base::Bind(&SyncCore::ConnectSyncTypeToCore,
30                                         sync_core_,
31                                         type,
32                                         data_type_state,
33                                         base::MessageLoopProxy::current(),
34                                         type_processor));
35}
36
37void SyncCoreProxyImpl::Disconnect(ModelType type) {
38  sync_task_runner_->PostTask(
39      FROM_HERE, base::Bind(&SyncCore::Disconnect, sync_core_, type));
40}
41
42scoped_ptr<SyncCoreProxy> SyncCoreProxyImpl::Clone() const {
43  return scoped_ptr<SyncCoreProxy>(
44      new SyncCoreProxyImpl(sync_task_runner_, sync_core_));
45}
46
47}  // namespace syncer
48