package peer
|
|
|
|
import (
|
|
. "github.com/tendermint/tendermint/binary"
|
|
"io"
|
|
)
|
|
|
|
/* Packet */
|
|
|
|
type Packet struct {
|
|
Channel String
|
|
Bytes ByteSlice
|
|
// Hash
|
|
}
|
|
|
|
func NewPacket(chName String, bytes ByteSlice) Packet {
|
|
return Packet{
|
|
Channel: chName,
|
|
Bytes: bytes,
|
|
}
|
|
}
|
|
|
|
func (p Packet) WriteTo(w io.Writer) (n int64, err error) {
|
|
n, err = WriteOnto(&p.Channel, w, n, err)
|
|
n, err = WriteOnto(&p.Bytes, w, n, err)
|
|
return
|
|
}
|
|
|
|
func ReadPacketSafe(r io.Reader) (pkt Packet, err error) {
|
|
chName, err := ReadStringSafe(r)
|
|
if err != nil {
|
|
return
|
|
}
|
|
// TODO: packet length sanity check.
|
|
bytes, err := ReadByteSliceSafe(r)
|
|
if err != nil {
|
|
return
|
|
}
|
|
return NewPacket(chName, bytes), nil
|
|
}
|
|
|
|
/* InboundPacket */
|
|
|
|
type InboundPacket struct {
|
|
Peer *Peer
|
|
Channel *Channel
|
|
Time Time
|
|
Packet
|
|
}
|
|
|
|
/* NewFilterMsg */
|
|
|
|
type NewFilterMsg struct {
|
|
ChName String
|
|
Filter interface{} // todo
|
|
}
|
|
|
|
func (m *NewFilterMsg) WriteTo(w io.Writer) (int64, error) {
|
|
panic("TODO: implement")
|
|
return 0, nil // TODO
|
|
}
|