]> Cypherpunks.ru repositories - nncp.git/blobdiff - src/cypherpunks.ru/nncp/cfg.go
-maxonlinetime option
[nncp.git] / src / cypherpunks.ru / nncp / cfg.go
index 10dd46b917a430174b17ac3bb8801d705917bd4f..0c7de2f0f5e03270de8cca9366c8fc17ae93d1cb 100644 (file)
@@ -50,7 +50,8 @@ type NodeYAML struct {
 
        Addrs map[string]string `addrs,omitempty`
 
-       OnlineDeadline *int `onlinedeadline,omitempty`
+       OnlineDeadline *uint `onlinedeadline,omitempty`
+       MaxOnlineTime  *uint `maxonlinetime,omitempty`
 }
 
 type CallYAML struct {
@@ -58,7 +59,8 @@ type CallYAML struct {
        Nice           *int    `nice,omitempty`
        Xx             *string `xx,omitempty`
        Addr           *string `addr,omitempty`
-       OnlineDeadline *int    `onlinedeadline,omitempty`
+       OnlineDeadline *uint   `onlinedeadline,omitempty`
+       MaxOnlineTime  *uint   `maxonlinetime,omitempty`
 }
 
 type NodeOurYAML struct {
@@ -141,13 +143,17 @@ func NewNode(name string, yml NodeYAML) (*Node, error) {
                freq = &fr
        }
 
-       defOnlineDeadline := int(DefaultDeadline)
+       defOnlineDeadline := uint(DefaultDeadline)
        if yml.OnlineDeadline != nil {
                if *yml.OnlineDeadline <= 0 {
                        return nil, errors.New("OnlineDeadline must be at least 1 second")
                }
                defOnlineDeadline = *yml.OnlineDeadline
        }
+       var defMaxOnlineTime uint
+       if yml.MaxOnlineTime != nil {
+               defMaxOnlineTime = *yml.MaxOnlineTime
+       }
 
        var calls []*Call
        for _, callYml := range yml.Calls {
@@ -188,12 +194,17 @@ func NewNode(name string, yml NodeYAML) (*Node, error) {
                        }
                        onlineDeadline = *callYml.OnlineDeadline
                }
+               var maxOnlineTime uint
+               if callYml.MaxOnlineTime != nil {
+                       maxOnlineTime = *callYml.MaxOnlineTime
+               }
                calls = append(calls, &Call{
                        Cron:           expr,
                        Nice:           nice,
                        Xx:             &xx,
                        Addr:           addr,
                        OnlineDeadline: onlineDeadline,
+                       MaxOnlineTime:  maxOnlineTime,
                })
        }
 
@@ -208,6 +219,7 @@ func NewNode(name string, yml NodeYAML) (*Node, error) {
                Calls:          calls,
                Addrs:          yml.Addrs,
                OnlineDeadline: defOnlineDeadline,
+               MaxOnlineTime:  defMaxOnlineTime,
        }
        copy(node.ExchPub[:], exchPub)
        if len(noisePub) > 0 {