lnrpc: receive custom message
This commit is contained in:
16 files changed
+4406
-3836
No files matched your search
+37
-1
@@ -94,6 +94,11 @@ type newChannelMsg struct {
|
||||
err chan error
|
||||
}
|
||||
|
||||
type customMsg struct {
|
||||
peer [33]byte
|
||||
msg lnwire.Custom
|
||||
}
|
||||
|
||||
// closeMsg is a wrapper struct around any wire messages that deal with the
|
||||
// cooperative channel closure negotiation process. This struct includes the
|
||||
// raw channel ID targeted along with the original message.
|
||||
@@ -318,6 +323,10 @@ type Config struct {
|
||||
// that is accumulated before signing a new commitment.
|
||||
ChannelCommitBatchSize uint32
|
||||
|
||||
// HandleCustomMessage is called whenever a custom message is received
|
||||
// from the peer.
|
||||
HandleCustomMessage func(peer [33]byte, msg *lnwire.Custom) error
|
||||
|
||||
// Quit is the server's quit channel. If this is closed, we halt operation.
|
||||
Quit chan struct{}
|
||||
}
|
||||
@@ -1449,6 +1458,13 @@ out:
|
||||
|
||||
discStream.AddMsg(msg)
|
||||
|
||||
case *lnwire.Custom:
|
||||
err := p.handleCustomMessage(msg)
|
||||
if err != nil {
|
||||
p.storeError(err)
|
||||
peerLog.Errorf("peer: %v, %v", p, err)
|
||||
}
|
||||
|
||||
default:
|
||||
// If the message we received is unknown to us, store
|
||||
// the type to track the failure.
|
||||
@@ -1486,6 +1502,17 @@ out:
|
||||
peerLog.Tracef("readHandler for peer %v done", p)
|
||||
}
|
||||
|
||||
// handleCustomMessage handles the given custom message if a handler is
|
||||
// registered.
|
||||
func (p *Brontide) handleCustomMessage(msg *lnwire.Custom) error {
|
||||
if p.cfg.HandleCustomMessage == nil {
|
||||
return fmt.Errorf("no custom message handler for "+
|
||||
"message type %v", uint16(msg.MsgType()))
|
||||
}
|
||||
|
||||
return p.cfg.HandleCustomMessage(p.PubKey(), msg)
|
||||
}
|
||||
|
||||
// isActiveChannel returns true if the provided channel id is active, otherwise
|
||||
// returns false.
|
||||
func (p *Brontide) isActiveChannel(chanID lnwire.ChannelID) bool {
|
||||
@@ -1686,6 +1713,8 @@ func messageSummary(msg lnwire.Message) string {
|
||||
time.Unix(int64(msg.FirstTimestamp), 0),
|
||||
msg.TimestampRange)
|
||||
|
||||
case *lnwire.Custom:
|
||||
return fmt.Sprintf("type=%d", msg.Type)
|
||||
}
|
||||
|
||||
return ""
|
||||
@@ -1714,8 +1743,15 @@ func (p *Brontide) logWireMessage(msg lnwire.Message, read bool) {
|
||||
preposition = "from"
|
||||
}
|
||||
|
||||
var msgType string
|
||||
if msg.MsgType() < lnwire.CustomTypeStart {
|
||||
msgType = msg.MsgType().String()
|
||||
} else {
|
||||
msgType = "custom"
|
||||
}
|
||||
|
||||
return fmt.Sprintf("%v %v%s %v %s", summaryPrefix,
|
||||
msg.MsgType(), summary, preposition, p)
|
||||
msgType, summary, preposition, p)
|
||||
}))
|
||||
|
||||
switch m := msg.(type) {
|
||||
|
||||
Reference in new issue
Block a user