github.com/ari-anchor/sei-tendermint@v0.0.0-20230519144642-dc826b7b56bb/proto/tendermint/p2p/pex.go (about) 1 package p2p 2 3 import ( 4 "fmt" 5 6 "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 default: 17 return fmt.Errorf("unknown pex message: %T", msg) 18 } 19 return nil 20 } 21 22 // Unwrap implements the p2p Wrapper interface and unwraps a wrapped PEX 23 // message. 24 func (m *PexMessage) Unwrap() (proto.Message, error) { 25 switch msg := m.Sum.(type) { 26 case *PexMessage_PexRequest: 27 return msg.PexRequest, nil 28 case *PexMessage_PexResponse: 29 return msg.PexResponse, nil 30 default: 31 return nil, fmt.Errorf("unknown pex message: %T", msg) 32 } 33 }