+func readIntFromFile(path string) (int, error) {
+ data, err := ioutil.ReadFile(path)
+ if err != nil {
+ return 0, err
+ }
+ val, err := strconv.Atoi(strings.TrimRight(string(data), "\n"))
+ if err != nil {
+ return 0, err
+ }
+ return val, nil
+}
+
+// Get peer related configuration.
+func (id *PeerId) ConfGet() *PeerConf {
+ if dummyConf != nil {
+ return dummyConf
+ }
+ conf := PeerConf{Id: id, Noncediff: 1, NoiseEnable: false, CPR: 0}
+ peerPath := path.Join(PeersPath, id.String())
+
+ timeout := TimeoutDefault
+ if val, err := readIntFromFile(path.Join(peerPath, "timeout")); err == nil {
+ timeout = val
+ }
+ conf.Timeout = time.Second * time.Duration(timeout)
+
+ if val, err := readIntFromFile(path.Join(peerPath, "noncediff")); err == nil {
+ conf.Noncediff = val
+ }
+ if val, err := readIntFromFile(path.Join(peerPath, "noise")); err == nil && val == 1 {
+ conf.NoiseEnable = true
+ }
+ if val, err := readIntFromFile(path.Join(peerPath, "cpr")); err == nil {
+ conf.CPR = val
+ }
+ return &conf
+}
+