| OLD | NEW | 
|---|
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be | 
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. | 
| 4 | 4 | 
| 5 #ifndef SYNC_INTERNAL_API_SYNC_CORE_PROXY_IMPL_H_ | 5 #ifndef SYNC_INTERNAL_API_SYNC_CONTEXT_PROXY_IMPL_H_ | 
| 6 #define SYNC_INTERNAL_API_SYNC_CORE_PROXY_IMPL_H_ | 6 #define SYNC_INTERNAL_API_SYNC_CONTEXT_PROXY_IMPL_H_ | 
| 7 | 7 | 
| 8 #include "base/memory/scoped_ptr.h" | 8 #include "base/memory/scoped_ptr.h" | 
| 9 #include "base/memory/weak_ptr.h" | 9 #include "base/memory/weak_ptr.h" | 
| 10 #include "base/sequenced_task_runner.h" | 10 #include "base/sequenced_task_runner.h" | 
| 11 #include "sync/base/sync_export.h" | 11 #include "sync/base/sync_export.h" | 
| 12 #include "sync/internal_api/public/base/model_type.h" | 12 #include "sync/internal_api/public/base/model_type.h" | 
| 13 #include "sync/internal_api/public/sync_core_proxy.h" | 13 #include "sync/internal_api/public/sync_context_proxy.h" | 
| 14 | 14 | 
| 15 namespace syncer { | 15 namespace syncer { | 
| 16 | 16 | 
| 17 class SyncCore; | 17 class SyncContext; | 
| 18 class NonBlockingTypeProcessor; | 18 class ModelTypeSyncProxyImpl; | 
| 19 struct DataTypeState; | 19 struct DataTypeState; | 
| 20 | 20 | 
| 21 // Encapsulates a reference to the sync core and the thread it's running on. | 21 // Encapsulates a reference to the sync context and the thread it's running on. | 
| 22 // Used by sync's data types to connect with the sync core. | 22 // Used by sync's data types to connect with the sync context. | 
| 23 // | 23 // | 
| 24 // It is epxected that this object will be copied to and used on many different | 24 // It is expected that this object will be copied to and used on many different | 
| 25 // threads.  It is small and safe to pass by value. | 25 // threads.  It is small and safe to pass by value. | 
| 26 class SYNC_EXPORT_PRIVATE SyncCoreProxyImpl : public SyncCoreProxy { | 26 class SYNC_EXPORT_PRIVATE SyncContextProxyImpl : public SyncContextProxy { | 
| 27  public: | 27  public: | 
| 28   SyncCoreProxyImpl( | 28   SyncContextProxyImpl( | 
| 29       scoped_refptr<base::SequencedTaskRunner> sync_task_runner, | 29       scoped_refptr<base::SequencedTaskRunner> sync_task_runner, | 
| 30       base::WeakPtr<SyncCore> sync_core); | 30       base::WeakPtr<SyncContext> sync_context); | 
| 31   virtual ~SyncCoreProxyImpl(); | 31   virtual ~SyncContextProxyImpl(); | 
| 32 | 32 | 
| 33   // Attempts to connect a non-blocking type to the sync core. | 33   // Attempts to connect a non-blocking type to the sync context. | 
| 34   // | 34   // | 
| 35   // This may fail under some unusual circumstances, like shutdown.  Due to the | 35   // This may fail under some unusual circumstances, like shutdown.  Due to the | 
| 36   // nature of WeakPtrs and cross-thread communication, the caller will be | 36   // nature of WeakPtrs and cross-thread communication, the caller will be | 
| 37   // unable to distinguish a slow success from failure. | 37   // unable to distinguish a slow success from failure. | 
| 38   // | 38   // | 
| 39   // Must be called from the thread where the data type lives. | 39   // Must be called from the thread where the data type lives. | 
| 40   virtual void ConnectTypeToCore( | 40   virtual void ConnectTypeToSync( | 
| 41       syncer::ModelType type, | 41       syncer::ModelType type, | 
| 42       const DataTypeState& data_type_state, | 42       const DataTypeState& data_type_state, | 
| 43       base::WeakPtr<NonBlockingTypeProcessor> type_processor) OVERRIDE; | 43       base::WeakPtr<ModelTypeSyncProxyImpl> sync_proxy_impl) OVERRIDE; | 
| 44 | 44 | 
| 45   // Disables syncing for the given type on the sync thread. | 45   // Disables syncing for the given type on the sync thread. | 
| 46   virtual void Disconnect(syncer::ModelType type) OVERRIDE; | 46   virtual void Disconnect(syncer::ModelType type) OVERRIDE; | 
| 47 | 47 | 
| 48   virtual scoped_ptr<SyncCoreProxy> Clone() const OVERRIDE; | 48   virtual scoped_ptr<SyncContextProxy> Clone() const OVERRIDE; | 
| 49 | 49 | 
| 50  private: | 50  private: | 
| 51   // A SequencedTaskRunner representing the thread where the SyncCore lives. | 51   // A SequencedTaskRunner representing the thread where the SyncContext lives. | 
| 52   scoped_refptr<base::SequencedTaskRunner> sync_task_runner_; | 52   scoped_refptr<base::SequencedTaskRunner> sync_task_runner_; | 
| 53 | 53 | 
| 54   // The SyncCore this object is wrapping. | 54   // The SyncContext this object is wrapping. | 
| 55   base::WeakPtr<SyncCore> sync_core_; | 55   base::WeakPtr<SyncContext> sync_context_; | 
| 56 }; | 56 }; | 
| 57 | 57 | 
| 58 }  // namespace syncer | 58 }  // namespace syncer | 
| 59 | 59 | 
| 60 #endif  // SYNC_INTERNAL_API_SYNC_CORE_PROXY_IMPL_H_ | 60 #endif  // SYNC_INTERNAL_API_SYNC_CONTEXT_PROXY_IMPL_H_ | 
| OLD | NEW | 
|---|