]> Cypherpunks.ru repositories - nncp.git/commitdiff
Use typed time.Duration instead of raw uint for maxOnlineTime
authorSergey Matveev <stargrave@stargrave.org>
Fri, 20 Dec 2019 11:47:41 +0000 (14:47 +0300)
committerSergey Matveev <stargrave@stargrave.org>
Sun, 22 Dec 2019 18:13:04 +0000 (21:13 +0300)
src/call.go
src/cfg.go
src/cmd/nncp-call/main.go
src/node.go
src/sp.go

index 978d9117c03423649312c717f8ddb7e11190aa2c..727b95fd46d9fad3645af58d1f7ac73eadba26c7 100644 (file)
@@ -19,6 +19,7 @@ package nncp
 
 import (
        "net"
+       "time"
 
        "github.com/gorhill/cronexpr"
 )
@@ -31,7 +32,7 @@ type Call struct {
        TxRate         int
        Addr           *string
        OnlineDeadline uint
-       MaxOnlineTime  uint
+       MaxOnlineTime  time.Duration
 }
 
 func (ctx *Ctx) CallNode(
@@ -40,7 +41,8 @@ func (ctx *Ctx) CallNode(
        nice uint8,
        xxOnly TRxTx,
        rxRate, txRate int,
-       onlineDeadline, maxOnlineTime uint,
+       onlineDeadline uint,
+       maxOnlineTime time.Duration,
        listOnly bool,
        onlyPkts map[[32]byte]bool,
 ) (isGood bool) {
index fab35879e6d42519b09ac894d0ab81b00f63282e..42fa918ae431687c2a038000637c0ae66b4746db 100644 (file)
@@ -25,6 +25,7 @@ import (
        "os"
        "path"
        "strconv"
+       "time"
 
        "github.com/gorhill/cronexpr"
        "github.com/hjson/hjson-go"
@@ -201,9 +202,9 @@ func NewNode(name string, cfg NodeJSON) (*Node, error) {
                }
                defOnlineDeadline = *cfg.OnlineDeadline
        }
-       var defMaxOnlineTime uint
-       if yml.MaxOnlineTime != nil {
-               defMaxOnlineTime = *yml.MaxOnlineTime
+       var defMaxOnlineTime time.Duration
+       if cfg.MaxOnlineTime != nil {
+               defMaxOnlineTime = time.Duration(*cfg.MaxOnlineTime) * time.Second
        }
 
        var calls []*Call
@@ -259,9 +260,9 @@ func NewNode(name string, cfg NodeJSON) (*Node, error) {
                        onlineDeadline = *callCfg.OnlineDeadline
                }
 
-               var maxOnlineTime uint
+               var maxOnlineTime time.Duration
                if callCfg.MaxOnlineTime != nil {
-                       maxOnlineTime = *callCfg.MaxOnlineTime
+                       maxOnlineTime = time.Duration(*callCfg.MaxOnlineTime) * time.Second
                }
 
                calls = append(calls, &Call{
index f4eed676e30dcbf0ef5e27e42a8dfde5f7a1f8e1..7b0a0d827089728ff67e9125ff0f31c241d7b1a6 100644 (file)
@@ -24,6 +24,7 @@ import (
        "log"
        "os"
        "strings"
+       "time"
 
        "go.cypherpunks.ru/nncp/v5"
 )
@@ -55,8 +56,8 @@ func main() {
                version     = flag.Bool("version", false, "Print version information")
                warranty    = flag.Bool("warranty", false, "Print warranty information")
 
-               onlineDeadline = flag.Uint("onlinedeadline", 0, "Override onlinedeadline option")
-               maxOnlineTime  = flag.Uint("maxonlinetime", 0, "Override maxonlinetime option")
+               onlineDeadline   = flag.Uint("onlinedeadline", 0, "Override onlinedeadline option")
+               maxOnlineTimeSec = flag.Uint("maxonlinetime", 0, "Override maxonlinetime option")
        )
        flag.Usage = usage
        flag.Parse()
@@ -108,8 +109,11 @@ func main() {
        if *onlineDeadline == 0 {
                onlineDeadline = &node.OnlineDeadline
        }
-       if *maxOnlineTime == 0 {
-               maxOnlineTime = &node.MaxOnlineTime
+       var maxOnlineTime time.Duration
+       if *maxOnlineTimeSec == 0 {
+               maxOnlineTime = node.MaxOnlineTime
+       } else {
+               maxOnlineTime = time.Duration(*maxOnlineTimeSec) * time.Second
        }
 
        var xxOnly nncp.TRxTx
@@ -158,7 +162,7 @@ func main() {
                *rxRate,
                *txRate,
                *onlineDeadline,
-               *maxOnlineTime,
+               maxOnlineTime,
                *listOnly,
                onlyPkts,
        ) {
index 051d0561ea714ceb22b88908089e1eb5e9537ad3..e93b8d9c6565ba74954b11a3b6d7efb8f72efc7b 100644 (file)
@@ -21,6 +21,7 @@ import (
        "crypto/rand"
        "errors"
        "sync"
+       "time"
 
        "github.com/flynn/noise"
        "golang.org/x/crypto/blake2b"
@@ -51,7 +52,7 @@ type Node struct {
        RxRate         int
        TxRate         int
        OnlineDeadline uint
-       MaxOnlineTime  uint
+       MaxOnlineTime  time.Duration
        Calls          []*Call
 
        Busy bool
index d2123ee590d43663f978cf05d74ef5b6d4184114..db361d7c7fe39f195de5752d8f24c98abaa71b0a 100644 (file)
--- a/src/sp.go
+++ b/src/sp.go
@@ -172,7 +172,7 @@ type SPState struct {
        Node           *Node
        Nice           uint8
        onlineDeadline uint
-       maxOnlineTime  uint
+       maxOnlineTime  time.Duration
        hs             *noise.HandshakeState
        csOur          *noise.CipherState
        csTheir        *noise.CipherState
@@ -228,7 +228,7 @@ func (state *SPState) NotAlive() bool {
        default:
        }
        now := time.Now()
-       if state.maxOnlineTime > 0 && state.started.Add(time.Duration(state.maxOnlineTime)*time.Second).Before(now) {
+       if state.maxOnlineTime > 0 && state.started.Add(state.maxOnlineTime).Before(now) {
                return true
        }
        return uint(now.Sub(state.RxLastSeen).Seconds()) >= state.onlineDeadline &&