summaryrefslogtreecommitdiffstats
path: root/sync/internal_api/base_transaction.h
diff options
context:
space:
mode:
Diffstat (limited to 'sync/internal_api/base_transaction.h')
-rw-r--r--sync/internal_api/base_transaction.h54
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_