2 NNCP -- Node to Node copy, utilities for store-and-forward data exchange
3 Copyright (C) 2016-2020 Sergey Matveev <stargrave@stargrave.org>
5 This program is free software: you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation, version 3 of the License.
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
14 You should have received a copy of the GNU General Public License
15 along with this program. If not, see <http://www.gnu.org/licenses/>.
23 "github.com/gorhill/cronexpr"
27 Cron *cronexpr.Expression
37 func (ctx *Ctx) CallNode(
43 onlineDeadline, maxOnlineTime uint,
45 onlyPkts map[[32]byte]bool,
47 for _, addr := range addrs {
48 sds := SDS{"node": node.Id, "addr": addr}
49 ctx.LogD("call", sds, "dialing")
50 var conn ConnDeadlined
53 conn, err = NewPipeConn(addr[1:])
55 conn, err = net.Dial("tcp", addr)
58 ctx.LogD("call", SdsAdd(sds, SDS{"err": err}), "dialing")
61 ctx.LogD("call", sds, "connected")
66 onlineDeadline: onlineDeadline,
67 maxOnlineTime: maxOnlineTime,
74 if err = state.StartI(conn); err == nil {
75 ctx.LogI("call-start", sds, "connected")
77 ctx.LogI("call-finish", SDS{
78 "node": state.Node.Id,
79 "duration": int64(state.Duration.Seconds()),
80 "rxbytes": state.RxBytes,
81 "txbytes": state.TxBytes,
82 "rxspeed": state.RxSpeed,
83 "txspeed": state.TxSpeed,
89 ctx.LogE("call-start", sds, err, "")