// Copyright 2012 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//
// Sync protocol for persisting the loopback server state to disk.

syntax = "proto2";

option java_multiple_files = true;
option java_package = "org.chromium.components.sync.protocol";

option optimize_for = LITE_RUNTIME;

package sync_pb;

import "components/sync/protocol/sync_entity.proto";

// Serialization of the LoopbackServerEntity and its ancestors.
message LoopbackServerEntity {
  // Entity type mapping to one of the subclasses of LoopbackServerEntity.
  enum Type {
    UNKNOWN = 0;
    BOOKMARK = 1;
    PERMANENT = 2;
    TOMBSTONE = 3;
    UNIQUE = 4;
  }

  optional Type type = 1;
  optional SyncEntity entity = 2;
  optional int64 data_type = 3;
}

// Contains the loopback server state.
message LoopbackServerProto {
  // The protocol buffer format version.
  optional int64 version = 1;

  optional int64 store_birthday = 2;

  repeated LoopbackServerEntity entities = 3;

  // All Keystore keys known to the server.
  repeated bytes keystore_keys = 4;

  // The last entity ID that was assigned to an entity.
  optional int64 last_version_assigned = 5;
}
