| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- package packetconn
- import (
- "encoding/binary"
- "io"
- )
- func NewPacketBundle() PacketBundle {
- return &packetBundle{}
- }
- type packetBundle struct{}
- func (p *packetBundle) Overhead() int {
- return 2
- }
- func (p *packetBundle) WriteToBundle(b []byte, writer io.Writer) (err error) {
- err = binary.Write(writer, binary.BigEndian, uint16(len(b)))
- if err != nil {
- return
- }
- _, err = writer.Write(b)
- return
- }
- func (p *packetBundle) ReadFromBundle(writer io.Reader) (b []byte, err error) {
- var length uint16
- err = binary.Read(writer, binary.BigEndian, &length)
- if err != nil {
- return
- }
- b = make([]byte, length)
- n, err := io.ReadFull(writer, b)
- if err != nil {
- return
- }
- if n != int(length) {
- return nil, io.ErrUnexpectedEOF
- }
- return
- }
- type PacketBundle interface {
- Overhead() int
- WriteToBundle(b []byte, writer io.Writer) (err error)
- ReadFromBundle(writer io.Reader) (b []byte, err error)
- }
|