wire for new request past diff message

This commit is contained in:
msutton
2022-03-11 08:58:53 +02:00
parent 7100716aeb
commit ba20ff3d34
4 changed files with 83 additions and 0 deletions

View File

@@ -71,6 +71,7 @@ const (
CmdBlockWithTrustedDataV4
CmdRequestIBDChainBlockLocator
CmdIBDChainBlockLocator
CmdRequestPastDiff
// rpc
CmdGetCurrentNetworkRequestMessage

View File

@@ -0,0 +1,33 @@
// Copyright (c) 2013-2016 The btcsuite developers
// Use of this source code is governed by an ISC
// license that can be found in the LICENSE file.
package appmessage
import (
"github.com/kaspanet/kaspad/domain/consensus/model/externalapi"
)
// MsgRequestPastDiff implements the Message interface and represents a kaspa
// RequestHeaders message. It is used to request a past diff past(RequestedHash) \setminus past(HasHash)
type MsgRequestPastDiff struct {
baseMessage
HasHash *externalapi.DomainHash
RequestedHash *externalapi.DomainHash
}
// Command returns the protocol command string for the message. This is part
// of the Message interface implementation.
func (msg *MsgRequestPastDiff) Command() MessageCommand {
return CmdRequestPastDiff
}
// NewMsgRequestPastDiff returns a new kaspa RequestPastDiff message that conforms to the
// Message interface using the passed parameters and defaults for the remaining
// fields.
func NewMsgRequestPastDiff(hasHash, requestedHash *externalapi.DomainHash) *MsgRequestPastDiff {
return &MsgRequestPastDiff{
HasHash: hasHash,
RequestedHash: requestedHash,
}
}

View File

@@ -0,0 +1,42 @@
package protowire
import (
"github.com/kaspanet/kaspad/app/appmessage"
"github.com/pkg/errors"
)
func (x *KaspadMessage_RequestPastDiff) toAppMessage() (appmessage.Message, error) {
if x == nil {
return nil, errors.Wrapf(errorNil, "KaspadMessage_RequestPastDiff is nil")
}
return x.RequestPastDiff.toAppMessage()
}
func (x *RequestPastDiffMessage) toAppMessage() (appmessage.Message, error) {
if x == nil {
return nil, errors.Wrapf(errorNil, "RequestPastDiffMessage is nil")
}
hasHash, err := x.HasHash.toDomain()
if err != nil {
return nil, err
}
requestedHash, err := x.RequestedHash.toDomain()
if err != nil {
return nil, err
}
return &appmessage.MsgRequestPastDiff{
HasHash: hasHash,
RequestedHash: requestedHash,
}, nil
}
func (x *KaspadMessage_RequestPastDiff) fromAppMessage(msgRequestPastDiff *appmessage.MsgRequestPastDiff) error {
x.RequestPastDiff = &RequestPastDiffMessage{
HasHash: domainHashToProto(msgRequestPastDiff.HasHash),
RequestedHash: domainHashToProto(msgRequestPastDiff.RequestedHash),
}
return nil
}

View File

@@ -345,6 +345,13 @@ func toP2PPayload(message appmessage.Message) (isKaspadMessage_Payload, error) {
return nil, err
}
return payload, nil
case *appmessage.MsgRequestPastDiff:
payload := new(KaspadMessage_RequestPastDiff)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
default:
return nil, nil
}