github.com/Oyster-zx/tendermint@v0.34.24-fork/proto/tendermint/blockchain/message.go (about) 1 package blockchain 2 3 import ( 4 "fmt" 5 6 "github.com/gogo/protobuf/proto" 7 "github.com/tendermint/tendermint/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 }