diff options
Diffstat (limited to 'sync/internal_api/base_transaction.h')
-rw-r--r-- | sync/internal_api/base_transaction.h | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/sync/internal_api/base_transaction.h b/sync/internal_api/base_transaction.h new file mode 100644 index 0000000..f39bca6 --- /dev/null +++ b/sync/internal_api/base_transaction.h @@ -0,0 +1,54 @@ +// 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. + +#ifndef SYNC_INTERNAL_API_BASE_TRANSACTION_H_ +#define SYNC_INTERNAL_API_BASE_TRANSACTION_H_ +#pragma once + +#include "sync/internal_api/user_share.h" + +#include "sync/util/cryptographer.h" + +namespace syncable { +class BaseTransaction; +class Directory; +} + +namespace sync_api { + +// Sync API's BaseTransaction, ReadTransaction, and WriteTransaction allow for +// batching of several read and/or write operations. The read and write +// operations are performed by creating ReadNode and WriteNode instances using +// the transaction. These transaction classes wrap identically named classes in +// syncable, and are used in a similar way. Unlike syncable::BaseTransaction, +// whose construction requires an explicit syncable::Directory, a sync +// API BaseTransaction is created from a UserShare object. +class BaseTransaction { + public: + // Provide access to the underlying syncable.h objects from BaseNode. + virtual syncable::BaseTransaction* GetWrappedTrans() const = 0; + browser_sync::Cryptographer* GetCryptographer() const; + + syncable::Directory* GetDirectory() const { + return directory_; + } + + protected: + explicit BaseTransaction(UserShare* share); + virtual ~BaseTransaction(); + + BaseTransaction() : directory_(NULL) { } + + private: + syncable::Directory* directory_; + + DISALLOW_COPY_AND_ASSIGN(BaseTransaction); +}; + +syncable::ModelTypeSet GetEncryptedTypes( + const sync_api::BaseTransaction* trans); + +} // namespace sync_api + +#endif // SYNC_INTERNAL_API_BASE_TRANSACTION_H_ |