mirror of
https://github.com/fluencelabs/tendermint
synced 2025-05-03 18:42:14 +00:00
beginning to write pex
This commit is contained in:
parent
ec89eb168d
commit
a6f574658f
@ -1,12 +1,9 @@
|
|||||||
package peer
|
package peer
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"io"
|
|
||||||
|
|
||||||
. "github.com/tendermint/tendermint/binary"
|
. "github.com/tendermint/tendermint/binary"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Message interface {
|
type Message interface {
|
||||||
Binary
|
Binary
|
||||||
Type() string
|
|
||||||
}
|
}
|
||||||
|
@ -201,8 +201,8 @@ func NewPacket(chName String, bytes ByteSlice) Packet {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (p Packet) WriteTo(w io.Writer) (n int64, err error) {
|
func (p Packet) WriteTo(w io.Writer) (n int64, err error) {
|
||||||
n, err = WriteOnto(&p.Channel, w, n, err)
|
n, err = WriteOnto(p.Channel, w, n, err)
|
||||||
n, err = WriteOnto(&p.Bytes, w, n, err)
|
n, err = WriteOnto(p.Bytes, w, n, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
67
peer/pex.go
Normal file
67
peer/pex.go
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
package peer
|
||||||
|
|
||||||
|
import (
|
||||||
|
. "github.com/tendermint/tendermint/binary"
|
||||||
|
"io"
|
||||||
|
)
|
||||||
|
|
||||||
|
const pexCh = "PEX"
|
||||||
|
|
||||||
|
func peerExchangeHandler(c *Client) {
|
||||||
|
|
||||||
|
for {
|
||||||
|
// inPkt := c.Receive(pexCh) // {Peer, Time, Packet}
|
||||||
|
|
||||||
|
// decode message
|
||||||
|
|
||||||
|
// if message is a peer request
|
||||||
|
|
||||||
|
// if message is
|
||||||
|
}
|
||||||
|
|
||||||
|
// cleanup
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Messages */
|
||||||
|
|
||||||
|
const (
|
||||||
|
pexTypeRequest = Byte(0x00)
|
||||||
|
pexTypeResponse = Byte(0x01)
|
||||||
|
)
|
||||||
|
|
||||||
|
func decodeMsg(bytes ByteSlice) (t Byte, msg Message) {
|
||||||
|
//return pexTypeRequest, nil
|
||||||
|
return pexTypeResponse, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
A response with peer addresses
|
||||||
|
*/
|
||||||
|
type pexResponseMsg struct {
|
||||||
|
Addrs []*NetAddress
|
||||||
|
}
|
||||||
|
|
||||||
|
func readPexResponseMsg(r io.Reader) *pexResponseMsg {
|
||||||
|
numAddrs := int(ReadUInt32(r))
|
||||||
|
addrs := []*NetAddress{}
|
||||||
|
for i := 0; i < numAddrs; i++ {
|
||||||
|
addr := ReadNetAddress(r)
|
||||||
|
addrs = append(addrs, addr)
|
||||||
|
}
|
||||||
|
return &pexResponseMsg{
|
||||||
|
Addrs: addrs,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *pexResponseMsg) WriteTo(w io.Writer) (n int64, err error) {
|
||||||
|
n, err = WriteOnto(UInt32(len(m.Addrs)), w, n, err)
|
||||||
|
for _, addr := range m.Addrs {
|
||||||
|
n, err = WriteOnto(addr, w, n, err)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *pexResponseMsg) Type() string {
|
||||||
|
return "pexTypeResponse"
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user