7 wire "github.com/tendermint/go-wire"
13 msgTypeRequest = byte(0x01)
14 msgTypeAddrs = byte(0x02)
17 // PexMessage is a primary type for PEX messages. Underneath, it could contain
18 // either pexRequestMessage, or pexAddrsMessage messages.
19 type PexMessage interface{}
21 var _ = wire.RegisterInterface(
22 struct{ PexMessage }{},
23 wire.ConcreteType{&pexRequestMessage{}, msgTypeRequest},
24 wire.ConcreteType{&pexAddrsMessage{}, msgTypeAddrs},
27 // DecodeMessage implements interface registered above.
28 func DecodeMessage(bz []byte) (msgType byte, msg PexMessage, err error) {
31 r := bytes.NewReader(bz)
32 msg = wire.ReadBinary(struct{ PexMessage }{}, r, maxPexMessageSize, n, &err).(struct{ PexMessage }).PexMessage
36 type pexRequestMessage struct{}
38 func (m *pexRequestMessage) String() string { return "[pexRequest]" }
40 type pexAddrsMessage struct {
41 Addrs []*p2p.NetAddress
44 func (m *pexAddrsMessage) String() string { return fmt.Sprintf("[pexAddrs %v]", m.Addrs) }