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

// Update proto_value_conversions{.h,.cc,_unittest.cc} if you change
// any fields in this file.

syntax = "proto2";

option optimize_for = LITE_RUNTIME;
option retain_unknown_fields = true;

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
  optional int32 set_sync_long_poll_interval = 2;  // in seconds

  optional int32 max_commit_batch_size = 3;

  // Number of seconds to delay between a sessions action and sending a commit
  // message to the server. Can be overridden by |custom_nudge_delays|.
  optional int32 sessions_commit_delay_seconds = 4;

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

  // Maximum number of local nudges to buffer per-type.
  optional int32 client_invalidation_hint_buffer_size = 6;

  // Time to wait before issuing a retry GU.
  optional int32 gu_retry_delay_seconds = 7;

  // A dictionary of custom nudge delays.
  // Note: if a SESSIONS value is present, this will override
  // |sessions_commit_delay_seconds|
  // New in M39.
  repeated CustomNudgeDelay custom_nudge_delays = 8;
};