OSDN Git Service

fix the code style
[bytom/bytom-spv.git] / p2p / pex / pex_message.go
1 package pex
2
3 import (
4         "bytes"
5         "fmt"
6
7         wire "github.com/tendermint/go-wire"
8 )
9
10 const (
11         msgTypeRequest = byte(0x01)
12         msgTypeAddrs   = byte(0x02)
13 )
14
15 // PexMessage is a primary type for PEX messages. Underneath, it could contain
16 // either pexRequestMessage, or pexAddrsMessage messages.
17 type PexMessage interface{}
18
19 var _ = wire.RegisterInterface(
20         struct{ PexMessage }{},
21         wire.ConcreteType{&pexRequestMessage{}, msgTypeRequest},
22         wire.ConcreteType{&pexAddrsMessage{}, msgTypeAddrs},
23 )
24
25 // DecodeMessage implements interface registered above.
26 func DecodeMessage(bz []byte) (msgType byte, msg PexMessage, err error) {
27         msgType = bz[0]
28         n := new(int)
29         r := bytes.NewReader(bz)
30         msg = wire.ReadBinary(struct{ PexMessage }{}, r, maxPexMessageSize, n, &err).(struct{ PexMessage }).PexMessage
31         return
32 }
33
34 type pexRequestMessage struct{}
35
36 func (m *pexRequestMessage) String() string { return "[pexRequest]" }
37
38 type pexAddrsMessage struct {
39         Addrs []*NetAddress
40 }
41
42 func (m *pexAddrsMessage) String() string { return fmt.Sprintf("[pexAddrs %v]", m.Addrs) }