7 wire "github.com/tendermint/go-wire"
11 msgTypeRequest = byte(0x01)
12 msgTypeAddrs = byte(0x02)
15 // PexMessage is a primary type for PEX messages. Underneath, it could contain
16 // either pexRequestMessage, or pexAddrsMessage messages.
17 type PexMessage interface{}
19 var _ = wire.RegisterInterface(
20 struct{ PexMessage }{},
21 wire.ConcreteType{&pexRequestMessage{}, msgTypeRequest},
22 wire.ConcreteType{&pexAddrsMessage{}, msgTypeAddrs},
25 // DecodeMessage implements interface registered above.
26 func DecodeMessage(bz []byte) (msgType byte, msg PexMessage, err error) {
29 r := bytes.NewReader(bz)
30 msg = wire.ReadBinary(struct{ PexMessage }{}, r, maxPexMessageSize, n, &err).(struct{ PexMessage }).PexMessage
34 type pexRequestMessage struct{}
36 func (m *pexRequestMessage) String() string { return "[pexRequest]" }
38 type pexAddrsMessage struct {
42 func (m *pexAddrsMessage) String() string { return fmt.Sprintf("[pexAddrs %v]", m.Addrs) }