github.com/Oyster-zx/tendermint@v0.34.24-fork/proto/tendermint/p2p/pex.go (about) 1 package p2p 2 3 import ( 4 "fmt" 5 6 "github.com/gogo/protobuf/proto" 7 ) 8 9 func (m *PexAddrs) Wrap() proto.Message { 10 pm := &Message{} 11 pm.Sum = &Message_PexAddrs{PexAddrs: m} 12 return pm 13 } 14 15 func (m *PexRequest) Wrap() proto.Message { 16 pm := &Message{} 17 pm.Sum = &Message_PexRequest{PexRequest: m} 18 return pm 19 } 20 21 // Unwrap implements the p2p Wrapper interface and unwraps a wrapped PEX 22 // message. 23 func (m *Message) Unwrap() (proto.Message, error) { 24 switch msg := m.Sum.(type) { 25 case *Message_PexRequest: 26 return msg.PexRequest, nil 27 case *Message_PexAddrs: 28 return msg.PexAddrs, nil 29 default: 30 return nil, fmt.Errorf("unknown pex message: %T", msg) 31 } 32 }