github.com/number571/tendermint@v0.34.11-gost/proto/tendermint/p2p/pex.go (about) 1 package p2p 2 3 import ( 4 fmt "fmt" 5 6 proto "github.com/gogo/protobuf/proto" 7 ) 8 9 // Wrap implements the p2p Wrapper interface and wraps a PEX message. 10 func (m *PexMessage) Wrap(pb proto.Message) error { 11 switch msg := pb.(type) { 12 case *PexRequest: 13 m.Sum = &PexMessage_PexRequest{PexRequest: msg} 14 case *PexResponse: 15 m.Sum = &PexMessage_PexResponse{PexResponse: msg} 16 case *PexRequestV2: 17 m.Sum = &PexMessage_PexRequestV2{PexRequestV2: msg} 18 case *PexResponseV2: 19 m.Sum = &PexMessage_PexResponseV2{PexResponseV2: msg} 20 default: 21 return fmt.Errorf("unknown pex message: %T", msg) 22 } 23 return nil 24 } 25 26 // Unwrap implements the p2p Wrapper interface and unwraps a wrapped PEX 27 // message. 28 func (m *PexMessage) Unwrap() (proto.Message, error) { 29 switch msg := m.Sum.(type) { 30 case *PexMessage_PexRequest: 31 return msg.PexRequest, nil 32 case *PexMessage_PexResponse: 33 return msg.PexResponse, nil 34 case *PexMessage_PexRequestV2: 35 return msg.PexRequestV2, nil 36 case *PexMessage_PexResponseV2: 37 return msg.PexResponseV2, nil 38 default: 39 return nil, fmt.Errorf("unknown pex message: %T", msg) 40 } 41 }