1 // Copyright 2012 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 #ifndef SYNC_INTERNAL_API_PUBLIC_READ_TRANSACTION_H_ 6 #define SYNC_INTERNAL_API_PUBLIC_READ_TRANSACTION_H_ 7 8 #include "base/compiler_specific.h" 9 #include "sync/api/attachments/attachment_id.h" 10 #include "sync/base/sync_export.h" 11 #include "sync/internal_api/public/base_transaction.h" 12 13 namespace tracked_objects { 14 class Location; 15 } // namespace tracked_objects 16 17 namespace sync_pb { 18 class DataTypeContext; 19 } 20 21 namespace syncer { 22 23 struct UserShare; 24 25 // Sync API's ReadTransaction is a read-only BaseTransaction. It wraps 26 // a syncable::ReadTransaction. 27 class SYNC_EXPORT ReadTransaction : public BaseTransaction { 28 public: 29 // Start a new read-only transaction on the specified repository. 30 ReadTransaction(const tracked_objects::Location& from_here, 31 UserShare* share); 32 33 // Resume the middle of a transaction. Will not close transaction. 34 ReadTransaction(UserShare* share, syncable::BaseTransaction* trans); 35 36 virtual ~ReadTransaction(); 37 38 // BaseTransaction override. 39 virtual syncable::BaseTransaction* GetWrappedTrans() const OVERRIDE; 40 41 // Return |transaction_version| of |type| stored in sync directory's 42 // persisted info. 43 int64 GetModelVersion(ModelType type) const; 44 45 // Fills |context| with the datatype context associated with |type|. 46 void GetDataTypeContext(ModelType type, 47 sync_pb::DataTypeContext* context) const; 48 49 // Clears |id_set| and fills it with the ids of attachments that need to be 50 // uploaded to the sync server. 51 void GetAttachmentIdsToUpload(ModelType type, AttachmentIdSet* id_set); 52 53 private: 54 void* operator new(size_t size); // Transaction is meant for stack use only. 55 56 // The underlying syncable object which this class wraps. 57 syncable::BaseTransaction* transaction_; 58 bool close_transaction_; 59 60 DISALLOW_COPY_AND_ASSIGN(ReadTransaction); 61 }; 62 63 } // namespace syncer 64 65 #endif // SYNC_INTERNAL_API_PUBLIC_READ_TRANSACTION_H_ 66