tendermint/peer/msg.go

65 lines
1.1 KiB
Go
Raw Normal View History

2014-06-24 17:28:40 -07:00
package peer
2014-06-25 21:37:20 -07:00
import (
2014-07-01 14:50:24 -07:00
"io"
2014-06-25 21:37:20 -07:00
. "github.com/tendermint/tendermint/binary"
)
2014-06-24 17:28:40 -07:00
/*
Packet encapsulates a ByteSlice on a Channel.
*/
type Packet struct {
2014-07-01 14:50:24 -07:00
Channel String
Bytes ByteSlice
// Hash
}
func NewPacket(chName String, bytes ByteSlice) Packet {
2014-07-01 14:50:24 -07:00
return Packet{
Channel: chName,
Bytes: bytes,
}
}
func (p Packet) WriteTo(w io.Writer) (n int64, err error) {
2014-07-01 14:50:24 -07:00
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) {
2014-07-01 14:50:24 -07:00
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
2014-06-24 17:28:40 -07:00
}
/*
InboundPacket extends Packet with fields relevant to incoming packets.
*/
type InboundPacket struct {
Peer *Peer
Time Time
2014-07-01 14:50:24 -07:00
Packet
2014-06-24 17:28:40 -07:00
}
/*
NewFilterMsg is not implemented. TODO
*/
2014-06-24 17:28:40 -07:00
type NewFilterMsg struct {
2014-07-01 14:50:24 -07:00
ChName String
Filter interface{} // todo
2014-06-24 17:28:40 -07:00
}
func (m *NewFilterMsg) WriteTo(w io.Writer) (int64, error) {
2014-07-01 14:50:24 -07:00
panic("TODO: implement")
return 0, nil // TODO
2014-06-24 17:28:40 -07:00
}