From 9c7e7176b005d83b4ee76898445229bac0ea6b00 Mon Sep 17 00:00:00 2001 From: Zsolt Felfoldi Date: Thu, 28 Nov 2019 00:45:43 +0100 Subject: [PATCH] les: use single command format for lespay/reply --- les/api.go | 6 ++---- les/client_handler.go | 14 +++++++------- les/peer.go | 12 ++++++------ les/server_handler.go | 12 ++++-------- 4 files changed, 19 insertions(+), 25 deletions(-) diff --git a/les/api.go b/les/api.go index 43cafacb11..b30d3a38a8 100644 --- a/les/api.go +++ b/les/api.go @@ -407,10 +407,8 @@ func (api *PrivateLespayAPI) makeCall(ctx context.Context, remote bool, nodeStr if api.clientHandler == nil { return nil, errors.New("client handler not available") } - cancelFn = api.clientHandler.makeLespayCall(peer, [][]byte{cmd}, func(replies [][]byte) bool { - if len(replies) == 1 { - reply = replies[0] - } + cancelFn = api.clientHandler.makeLespayCall(peer, cmd, func(r []byte) bool { + reply = r close(delivered) return reply != nil }) diff --git a/les/client_handler.go b/les/client_handler.go index 37f5e02ae5..e718eda089 100644 --- a/les/client_handler.go +++ b/les/client_handler.go @@ -41,7 +41,7 @@ type clientHandler struct { downloader *downloader.Downloader backend *LightEthereum - lespayReplyHandlers map[uint64]func([][]byte) bool + lespayReplyHandlers map[uint64]func([]byte) bool lespayReplyLock sync.Mutex closeCh chan struct{} @@ -54,7 +54,7 @@ func newClientHandler(ulcServers []string, ulcFraction int, checkpoint *params.T checkpoint: checkpoint, backend: backend, closeCh: make(chan struct{}), - lespayReplyHandlers: make(map[uint64]func([][]byte) bool), + lespayReplyHandlers: make(map[uint64]func([]byte) bool), } if ulcServers != nil { ulc, err := newULC(ulcServers, ulcFraction) @@ -320,8 +320,8 @@ func (h *clientHandler) handleMsg(p *peer) error { fmt.Println("LespayReply received") p.Log().Trace("Received tx status response") var resp struct { - ReqID uint64 - Replies [][]byte + ReqID uint64 + Reply []byte } if err := msg.Decode(&resp); err != nil { fmt.Println("LespayReply decode err", err) @@ -332,7 +332,7 @@ func (h *clientHandler) handleMsg(p *peer) error { if handler := h.lespayReplyHandlers[resp.ReqID]; handler != nil { fmt.Println("handler found") delete(h.lespayReplyHandlers, resp.ReqID) - responseError = !handler(resp.Replies) + responseError = !handler(resp.Reply) } else { fmt.Println("handler not found") responseError = true @@ -358,12 +358,12 @@ func (h *clientHandler) handleMsg(p *peer) error { return nil } -func (h *clientHandler) makeLespayCall(p *peer, cmds [][]byte, handler func([][]byte) bool) func() bool { +func (h *clientHandler) makeLespayCall(p *peer, cmd []byte, handler func([]byte) bool) func() bool { reqID := genReqID() h.lespayReplyLock.Lock() h.lespayReplyHandlers[reqID] = handler h.lespayReplyLock.Unlock() - if p.SendLespay(reqID, cmds) != nil { + if p.SendLespay(reqID, cmd) != nil { h.lespayReplyLock.Lock() delete(h.lespayReplyHandlers, reqID) h.lespayReplyLock.Unlock() diff --git a/les/peer.go b/les/peer.go index 1e9bdc8233..bfe2466e05 100644 --- a/les/peer.go +++ b/les/peer.go @@ -502,15 +502,15 @@ func (p *peer) SendTxs(reqID, cost uint64, txs rlp.RawValue) error { } // SendLespay sends a set of commands to the service token sale module -func (p *peer) SendLespay(reqID uint64, cmds [][]byte) error { - p.Log().Debug("Sending batch of lespay commands", "size", len(cmds)) - return sendRequest(p.rw, LespayMsg, reqID, 0, cmds) +func (p *peer) SendLespay(reqID uint64, cmd []byte) error { + p.Log().Debug("Sending batch of lespay commands", "size", len(cmd)) + return sendRequest(p.rw, LespayMsg, reqID, 0, cmd) } // ReplyLespay sends a set of replies to lespay commands -func (p *peer) ReplyLespay(reqID uint64, replies [][]byte) error { - p.Log().Debug("Sending batch of lespay replies", "size", len(replies)) - return sendRequest(p.rw, LespayReplyMsg, reqID, 0, replies) +func (p *peer) ReplyLespay(reqID uint64, reply []byte) error { + p.Log().Debug("Sending batch of lespay replies", "size", len(reply)) + return sendRequest(p.rw, LespayReplyMsg, reqID, 0, reply) } type keyValueEntry struct { diff --git a/les/server_handler.go b/les/server_handler.go index 106321f54d..a43bf2aef3 100644 --- a/les/server_handler.go +++ b/les/server_handler.go @@ -835,21 +835,17 @@ func (h *serverHandler) handleMsg(p *peer, wg *sync.WaitGroup) error { } var req struct { ReqID uint64 - Cmds [][]byte + Cmd []byte } if err := msg.Decode(&req); err != nil { clientErrorMeter.Mark(1) return errResp(ErrDecode, "msg %v: %v", msg, err) } - replies := h.server.tokenSale.runCommands(req.Cmds, p.ID(), p.freeClientId()) - p.ReplyLespay(req.ReqID, replies) + reply := h.server.tokenSale.runCommand(req.Cmd, p.ID(), p.freeClientId()) + p.ReplyLespay(req.ReqID, reply) if metrics.EnabledExpensive { miscOutLespayPacketsMeter.Mark(1) - var size int64 - for _, r := range replies { - size += int64(len(r)) - } - miscOutLespayTrafficMeter.Mark(size) + miscOutLespayTrafficMeter.Mark(int64(len(reply))) } default: