github.com/vipernet-xyz/tm@v0.34.24/proto/tendermint/blockchain/message.go (about)

     1  package blockchain
     2  
     3  import (
     4  	"fmt"
     5  
     6  	"github.com/gogo/protobuf/proto"
     7  	"github.com/vipernet-xyz/tm/p2p"
     8  )
     9  
    10  var _ p2p.Wrapper = &StatusRequest{}
    11  var _ p2p.Wrapper = &StatusResponse{}
    12  var _ p2p.Wrapper = &NoBlockResponse{}
    13  var _ p2p.Wrapper = &BlockResponse{}
    14  var _ p2p.Wrapper = &BlockRequest{}
    15  
    16  const (
    17  	BlockResponseMessagePrefixSize   = 4
    18  	BlockResponseMessageFieldKeySize = 1
    19  )
    20  
    21  func (m *BlockRequest) Wrap() proto.Message {
    22  	bm := &Message{}
    23  	bm.Sum = &Message_BlockRequest{BlockRequest: m}
    24  	return bm
    25  }
    26  
    27  func (m *BlockResponse) Wrap() proto.Message {
    28  	bm := &Message{}
    29  	bm.Sum = &Message_BlockResponse{BlockResponse: m}
    30  	return bm
    31  }
    32  
    33  func (m *NoBlockResponse) Wrap() proto.Message {
    34  	bm := &Message{}
    35  	bm.Sum = &Message_NoBlockResponse{NoBlockResponse: m}
    36  	return bm
    37  }
    38  
    39  func (m *StatusRequest) Wrap() proto.Message {
    40  	bm := &Message{}
    41  	bm.Sum = &Message_StatusRequest{StatusRequest: m}
    42  	return bm
    43  }
    44  
    45  func (m *StatusResponse) Wrap() proto.Message {
    46  	bm := &Message{}
    47  	bm.Sum = &Message_StatusResponse{StatusResponse: m}
    48  	return bm
    49  }
    50  
    51  // Unwrap implements the p2p Wrapper interface and unwraps a wrapped blockchain
    52  // message.
    53  func (m *Message) Unwrap() (proto.Message, error) {
    54  	switch msg := m.Sum.(type) {
    55  	case *Message_BlockRequest:
    56  		return m.GetBlockRequest(), nil
    57  
    58  	case *Message_BlockResponse:
    59  		return m.GetBlockResponse(), nil
    60  
    61  	case *Message_NoBlockResponse:
    62  		return m.GetNoBlockResponse(), nil
    63  
    64  	case *Message_StatusRequest:
    65  		return m.GetStatusRequest(), nil
    66  
    67  	case *Message_StatusResponse:
    68  		return m.GetStatusResponse(), nil
    69  
    70  	default:
    71  		return nil, fmt.Errorf("unknown message: %T", msg)
    72  	}
    73  }