summaryrefslogtreecommitdiffstats
path: root/chrome/browser/sync/engine/syncer_proto_util.h
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/sync/engine/syncer_proto_util.h')
-rw-r--r--chrome/browser/sync/engine/syncer_proto_util.h73
1 files changed, 73 insertions, 0 deletions
diff --git a/chrome/browser/sync/engine/syncer_proto_util.h b/chrome/browser/sync/engine/syncer_proto_util.h
new file mode 100644
index 0000000..ecee903
--- /dev/null
+++ b/chrome/browser/sync/engine/syncer_proto_util.h
@@ -0,0 +1,73 @@
+// Copyright (c) 2006-2008 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 CHROME_BROWSER_SYNC_ENGINE_SYNCER_PROTO_UTIL_H_
+#define CHROME_BROWSER_SYNC_ENGINE_SYNCER_PROTO_UTIL_H_
+
+#include <string>
+
+#include "chrome/browser/sync/engine/syncer_session.h"
+#include "chrome/browser/sync/util/sync_types.h"
+#include "chrome/browser/sync/syncable/blob.h"
+
+namespace syncable {
+class Entry;
+class ScopedDirLookup;
+class SyncName;
+} // namespace syncable
+
+namespace sync_pb {
+class ClientToServerResponse;
+} // namespace sync_pb
+
+namespace browser_sync {
+
+class ClientToServerMessage;
+class SyncerSession;
+class SyncEntity;
+class CommitResponse_EntryResponse;
+
+class SyncerProtoUtil {
+ public:
+ // Posts the given message and fills the buffer with the returned value.
+ // Returns true on success. Also handles store birthday verification:
+ // session->status()->syncer_stuck_ is set true if the birthday is
+ // incorrect. A false value will always be returned if birthday is bad.
+ static bool PostClientToServerMessage(ClientToServerMessage* msg,
+ sync_pb::ClientToServerResponse* response, SyncerSession *session);
+
+ // Compares a syncable Entry to SyncEntity, returns true iff
+ // the data is identical.
+ //
+ // TODO(sync): The places where this function is used are arguable big
+ // causes of the fragility, because there's a tendency to freak out
+ // the moment the local and server values diverge. However, this almost
+ // always indicates a sync bug somewhere earlier in the sync cycle.
+ static bool Compare(const syncable::Entry& local_entry,
+ const SyncEntity& server_entry);
+
+ // Utility methods for converting between syncable::Blobs and protobuf
+ // byte fields.
+ static void CopyProtoBytesIntoBlob(const std::string& proto_bytes,
+ syncable::Blob* blob);
+ static bool ProtoBytesEqualsBlob(const std::string& proto_bytes,
+ const syncable::Blob& blob);
+ static void CopyBlobIntoProtoBytes(const syncable::Blob& blob,
+ std::string* proto_bytes);
+
+ // Extract the name fields from a sync entity.
+ static syncable::SyncName NameFromSyncEntity(
+ const SyncEntity& entry);
+
+ // Extract the name fields from a commit entry response.
+ static syncable::SyncName NameFromCommitEntryResponse(
+ const CommitResponse_EntryResponse& entry);
+
+ private:
+ SyncerProtoUtil() {}
+ DISALLOW_COPY_AND_ASSIGN(SyncerProtoUtil);
+};
+} // namespace browser_sync
+
+#endif // CHROME_BROWSER_SYNC_ENGINE_SYNCER_PROTO_UTIL_H_