in swim/node.go [118:152]
func mergeDefaultOptions(opts *Options) *Options {
def := defaultOptions()
if opts == nil {
return def
}
opts.StateTimeouts = mergeStateTimeouts(opts.StateTimeouts, def.StateTimeouts)
opts.LabelLimits = mergeLabelOptions(opts.LabelLimits, def.LabelLimits)
opts.MinProtocolPeriod = util.SelectDuration(opts.MinProtocolPeriod, def.MinProtocolPeriod)
opts.RollupMaxUpdates = util.SelectInt(opts.RollupMaxUpdates, def.RollupMaxUpdates)
opts.RollupFlushInterval = util.SelectDuration(opts.RollupFlushInterval, def.RollupFlushInterval)
opts.PartitionHealPeriod = util.SelectDuration(opts.PartitionHealPeriod, def.PartitionHealPeriod)
opts.PartitionHealBaseProbabillity = util.SelectFloat(opts.PartitionHealBaseProbabillity, def.PartitionHealBaseProbabillity)
opts.JoinTimeout = util.SelectDuration(opts.JoinTimeout, def.JoinTimeout)
opts.PingTimeout = util.SelectDuration(opts.PingTimeout, def.PingTimeout)
opts.PingRequestTimeout = util.SelectDuration(opts.PingRequestTimeout, def.PingRequestTimeout)
opts.PingRequestSize = util.SelectInt(opts.PingRequestSize, def.PingRequestSize)
opts.MaxReverseFullSyncJobs = util.SelectInt(opts.MaxReverseFullSyncJobs, def.MaxReverseFullSyncJobs)
opts.SelfEvict = mergeSelfEvictOptions(opts.SelfEvict, def.SelfEvict)
if opts.Clock == nil {
opts.Clock = def.Clock
}
return opts
}