// 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 communication between sync client and server.

// If you change or add any fields in this file, update proto_visitors.h and
// potentially proto_enum_conversions.{h, cc}.

syntax = "proto2";

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

option optimize_for = LITE_RUNTIME;

package sync_pb;

message CustomNudgeDelay {
  optional int32 datatype_id = 1;  // Datatype id.
  optional int32 delay_ms = 2;     // Delay in milliseconds.
}

message ClientCommand {
  // Time to wait before sending any requests to the server.
  optional int32 set_sync_poll_interval = 1;  // in seconds
  // This has been deprecated since M75.
  optional int32 set_sync_long_poll_interval = 2 [deprecated = true];

  optional int32 max_commit_batch_size = 3;

  // Number of seconds to delay before the throttled client should retry.
  optional int32 throttle_delay_seconds = 5;

  // This has been deprecated since M109.
  optional int32 client_invalidation_hint_buffer_size = 6 [deprecated = true];

  // A dictionary of custom nudge delays.
  repeated CustomNudgeDelay custom_nudge_delays = 8;

  // Configuration for commit quota of extension-related data types.
  // The maximum count of tokens (=initial at browser startup) and the
  // interval for refilling one more token if not at maximum.
  optional int32 extension_types_max_tokens = 9;
  optional int32 extension_types_refill_interval_seconds = 10;

  // Extended nudge delay for data types with depleted quota.
  optional int32 extension_types_depleted_quota_nudge_delay_seconds = 11;

  reserved 4;
  reserved "sessions_commit_delay_seconds";

  reserved 7;
  reserved "gu_retry_delay_seconds";
}
