-
Notifications
You must be signed in to change notification settings - Fork 415
/
config.go
49 lines (42 loc) · 1.67 KB
/
config.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
// Copyright (c) 2016-2019 Uber Technologies, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package connstate
import "time"
// Config defines State configuration.
type Config struct {
// MaxOpenConnectionsPerTorrent is the maximum number of connections which a
// Scheduler will maintain at once for each torrent.
MaxOpenConnectionsPerTorrent int `yaml:"max_open_conn"`
// MaxMutualConnections is the maximum number of mutual connections a peer
// can have and still connect with us.
MaxMutualConnections int `yaml:"max_mutual_conn"`
// DisableBlacklist disables the blacklisting of peers. Should only be used
// for testing purposes.
DisableBlacklist bool `yaml:"disable_blacklist"`
// BlacklistDuration is the duration a connection will remain blacklisted.
BlacklistDuration time.Duration `yaml:"blacklist_duration"`
}
func (c Config) applyDefaults() Config {
if c.MaxOpenConnectionsPerTorrent == 0 {
c.MaxOpenConnectionsPerTorrent = 10
}
// Defaults to no mutual connection limit.
if c.MaxMutualConnections == 0 {
c.MaxMutualConnections = c.MaxOpenConnectionsPerTorrent
}
if c.BlacklistDuration == 0 {
c.BlacklistDuration = 30 * time.Second
}
return c
}