From 0bb673fa9dc09ecbda3ce5dd01b35d663cbfa689 Mon Sep 17 00:00:00 2001 From: George Tsagkarelis Date: Tue, 17 Sep 2024 18:45:52 +0200 Subject: [PATCH] protofsm: add returned error for MsgEndpoint methods --- protofsm/msg_router.go | 16 ++++++++++++---- protofsm/msg_router_test.go | 8 ++++---- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/protofsm/msg_router.go b/protofsm/msg_router.go index db98a44e9c1..c709f56e223 100644 --- a/protofsm/msg_router.go +++ b/protofsm/msg_router.go @@ -47,11 +47,11 @@ type MsgEndpoint interface { // CanHandle returns true if the target message can be routed to this // endpoint. - CanHandle(msg PeerMsg) bool + CanHandle(msg PeerMsg) (bool, error) // SendMessage handles the target message, and returns true if the // message was able being processed. - SendMessage(msg PeerMsg) bool + SendMessage(msg PeerMsg) (bool, error) } // MsgRouter is an interface that represents a message router, which is generic @@ -274,12 +274,20 @@ func (p *MultiMsgRouter) msgRouter() { // to those that can handle it the message. var couldSend bool for _, endpoint := range endpoints { - if endpoint.CanHandle(msg) { + canHandle, err := endpoint.CanHandle(msg) + if err != nil { + msgQuery.SendError(err) + } + + if canHandle { log.Debugf("MsgRouter: sending msg %T "+ "to endpoint %s", msg.Message, endpoint.Name()) - sent := endpoint.SendMessage(msg) + sent, err := endpoint.SendMessage(msg) + if err != nil { + msgQuery.SendError(err) + } couldSend = couldSend || sent } } diff --git a/protofsm/msg_router_test.go b/protofsm/msg_router_test.go index dedb2868706..b6f21e5bb07 100644 --- a/protofsm/msg_router_test.go +++ b/protofsm/msg_router_test.go @@ -18,16 +18,16 @@ func (m *mockEndpoint) Name() string { return args.String(0) } -func (m *mockEndpoint) CanHandle(msg PeerMsg) bool { +func (m *mockEndpoint) CanHandle(msg PeerMsg) (bool, error) { args := m.Called(msg) - return args.Bool(0) + return args.Bool(0), nil } -func (m *mockEndpoint) SendMessage(msg PeerMsg) bool { +func (m *mockEndpoint) SendMessage(msg PeerMsg) (bool, error) { args := m.Called(msg) - return args.Bool(0) + return args.Bool(0), nil } // TestMessageRouterOperation tests the basic operation of the message router: