From: Sergey Matveev Date: Mon, 16 Jan 2017 09:26:42 +0000 (+0300) Subject: nncp-toss -cycle option X-Git-Tag: 0.2^2~7 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=f27a86d9449494ecee432615d9f5f09d5b770a26;p=nncp.git nncp-toss -cycle option --- diff --git a/doc/cmds.texi b/doc/cmds.texi index 54348c8..9097044 100644 --- a/doc/cmds.texi +++ b/doc/cmds.texi @@ -235,7 +235,7 @@ queues. @section nncp-toss @verbatim -% nncp-toss [options] [-dryrun] +% nncp-toss [options] [-dryrun] [-cycle INT] @end verbatim Perform "tossing" operation on all inbound packets. This is the tool @@ -246,6 +246,10 @@ packets. It should be run after each online/offline exchange. @option{-dryrun} option does not perform any writing and sending, just tells what it will do. +@option{-cycle} option tells not to quit, but to repeat tossing every +@option{INT} seconds in an infinite loop. That can be useful when +running this command as a daemon. + @node nncp-xfer @section nncp-xfer diff --git a/src/cypherpunks.ru/nncp/cmd/nncp-toss/main.go b/src/cypherpunks.ru/nncp/cmd/nncp-toss/main.go index 5fd73b3..1106695 100644 --- a/src/cypherpunks.ru/nncp/cmd/nncp-toss/main.go +++ b/src/cypherpunks.ru/nncp/cmd/nncp-toss/main.go @@ -25,6 +25,7 @@ import ( "io/ioutil" "log" "os" + "time" "cypherpunks.ru/nncp" ) @@ -42,6 +43,7 @@ func main() { nodeRaw = flag.String("node", "", "Process only that node") niceRaw = flag.Int("nice", 255, "Minimal required niceness") dryRun = flag.Bool("dryrun", false, "Do not actually write any tossed data") + cycle = flag.Uint("cycle", 0, "Repeat tossing after N seconds in infinite loop") quiet = flag.Bool("quiet", false, "Print only errors") debug = flag.Bool("debug", false, "Print debug messages") version = flag.Bool("version", false, "Print version information") @@ -81,6 +83,7 @@ func main() { } } +Cycle: isBad := false for nodeId, node := range ctx.Neigh { if nodeOnly != nil && nodeId != *nodeOnly.Id { @@ -88,6 +91,10 @@ func main() { } isBad = ctx.Toss(node.Id, nice, *dryRun) } + if *cycle > 0 { + time.Sleep(time.Duration(*cycle) * time.Second) + goto Cycle + } if isBad { os.Exit(1) }