1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- package network
- import (
- "encoding/binary"
- "io"
- )
- type DataReader struct {
- r io.Reader
- }
- func NewDataReader(r io.Reader) *DataReader {
- return &DataReader{r: r}
- }
- func (reader *DataReader) Byte() (byte, error) {
- var b byte
- err := binary.Read(reader.r, binary.BigEndian, &b)
- if err != nil {
- return 0, err
- }
- return b, nil
- }
- func (reader *DataReader) Bytes(bytesLen int) ([]byte, error) {
- bs := make([]byte, bytesLen)
- err := binary.Read(reader.r, binary.BigEndian, bs)
- if err != nil {
- return nil, err
- }
- return bs, nil
- }
- func (reader *DataReader) Uint8() (uint8, error) {
- var u uint8
- err := binary.Read(reader.r, binary.BigEndian, &u)
- if err != nil {
- return 0, err
- }
- return u, nil
- }
- func (reader *DataReader) Uint16() (uint16, error) {
- var u uint16
- err := binary.Read(reader.r, binary.BigEndian, &u)
- if err != nil {
- return 0, err
- }
- return u, nil
- }
- func (reader *DataReader) Uint32() (uint32, error) {
- var u uint32
- err := binary.Read(reader.r, binary.BigEndian, &u)
- if err != nil {
- return 0, err
- }
- return u, nil
- }
- func (reader *DataReader) Uint64() (uint64, error) {
- var u uint64
- err := binary.Read(reader.r, binary.BigEndian, &u)
- if err != nil {
- return 0, err
- }
- return u, nil
- }
- func (reader *DataReader) String(bytesLen int) (string, error) {
- retBytes := make([]byte, bytesLen)
- err := binary.Read(reader.r, binary.BigEndian, retBytes)
- if err != nil {
- return "", err
- }
- return string(retBytes), nil
- }
|