// Copyright 2015 The Vanadium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

package vsync

import "time"

var (
	// peerSyncInterval is the duration between two consecutive peer
	// contacts. During every peer contact, the initiator obtains any
	// pending updates from that peer.
	peerSyncInterval = 50 * time.Millisecond

	// channelTimeout is the duration at which health checks will be requested on
	// connections to peers.
	channelTimeout = 2 * time.Second

	// peerConnectionTimeout is the time duration we wait for a connection to be
	// established with a peer.
	peerConnectionTimeout = 2 * time.Second

	// syncConnectionTimeout is the duration we wait for syncing to begin with a
	// peer. A value of 0 means we will only use connections that exist in our
	// cache.
	//
	// TODO(hpucha): Make sync connection timeout dynamic based on ping latency.
	// E.g. perhaps we should use a 2s ping timeout, and use k*pingLatency (for
	// some k) as getDeltas timeout
	syncConnectionTimeout = 0

	// memberViewTTL is the shelf-life of the aggregate view of syncgroup members.
	memberViewTTL = 2 * time.Second

	// pingFailuresCap is the number of failures to cap off at when
	// computing how many peer manager rounds to wait before retrying to
	// ping peers via the mount table. This implies that a peer manager will
	// backoff a maximum of (2^pingFailuresCap) rounds or
	// (2^pingFailuresCap)*peerManagementInterval in terms of duration.
	pingFailuresCap uint64 = 6

	// pingFanout is the maximum number of peers that can be pinged in
	// parallel.  TODO(hpucha): support ping fanout of 0.
	pingFanout = 10

	// peerManagementInterval is the duration between two rounds of peer
	// management actions.
	peerManagementInterval = peerSyncInterval / 5

	// maxLocationsInSignpost is the maximum number of Locations that
	// mergeSignposts() will permit in a Signpost.  Locations with more
	// recent WhenSeen values are kept preferentially.  Also, locateBlob
	// considers only the first maxLocationsInSignpost entries in a
	// Signpost's Locations.
	maxLocationsInSignpost = 4

	// blobRecencyTimeSlop:  Otherwise equivalent devices that last
	// synchronized with a server within blobRecencyTimeSlop are considered
	// to have equal sync time for the purposes of blob priority.
	blobRecencyTimeSlop = 2 * time.Minute

	// blobSyncDistanceDecay is used as the decay constant when computing
	// the mean sync hops from a server to the device, when computing blob priority.
	// Higher values mean more inertia.
	blobSyncDistanceDecay = float32(5)

	// initialBlobOwnerShares is the initial number of ownership shares that
	// a device gives itself when it introduces a BlobRef to a syncgroup.
	initialBlobOwnerShares = int32(2)
)
