Add parser for blockconnected notification (#238)
This commit is contained in:
parent
2581f84b59
commit
79cdeaaf8b
@ -12,7 +12,6 @@ import (
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
"decred.org/dcrwallet/rpc/client/dcrd"
|
||||
"github.com/decred/dcrd/chaincfg/v3"
|
||||
"github.com/decred/vspd/database"
|
||||
"github.com/decred/vspd/rpc"
|
||||
@ -46,7 +45,7 @@ func (n *NotificationHandler) Notify(method string, params json.RawMessage) erro
|
||||
return nil
|
||||
}
|
||||
|
||||
header, _, err := dcrd.BlockConnected(params)
|
||||
header, err := rpc.ParseBlockConnectedNotification(params)
|
||||
if err != nil {
|
||||
log.Errorf("Failed to parse dcrd block notification: %v", err)
|
||||
return nil
|
||||
|
||||
1
go.sum
1
go.sum
@ -171,7 +171,6 @@ golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJ
|
||||
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208 h1:qwRHBd0NqMbJxfbotnDhm2ByMI1Shq4Y6oRJo21SGJA=
|
||||
golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
|
||||
25
rpc/dcrd.go
25
rpc/dcrd.go
@ -5,8 +5,10 @@
|
||||
package rpc
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"context"
|
||||
"encoding/hex"
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"strings"
|
||||
@ -221,3 +223,26 @@ func (c *DcrdRPC) CanTicketVote(rawTx *dcrdtypes.TxRawResult, ticketHash string,
|
||||
|
||||
return live, nil
|
||||
}
|
||||
|
||||
// ParseBlockConnectedNotification extracts the block header from a
|
||||
// blockconnected JSON-RPC notification.
|
||||
func ParseBlockConnectedNotification(params json.RawMessage) (*wire.BlockHeader, error) {
|
||||
var notif []string
|
||||
err := json.Unmarshal(params, ¬if)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("json unmarshal error: %w", err)
|
||||
}
|
||||
|
||||
if len(notif) == 0 {
|
||||
return nil, errors.New("notification is empty")
|
||||
}
|
||||
|
||||
rawHeader := notif[0]
|
||||
var header wire.BlockHeader
|
||||
err = header.Deserialize(hex.NewDecoder(bytes.NewReader([]byte(rawHeader))))
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("error creating block header from bytes: %w", err)
|
||||
}
|
||||
|
||||
return &header, nil
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user