| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- package peer_protocol
- import (
- "encoding/binary"
- "io"
- "math"
- "github.com/pkg/errors"
- )
- type (
- // An alias for the underlying type of Integer. This is needed for fuzzing.
- IntegerKind = uint32
- Integer IntegerKind
- )
- const IntegerMax = math.MaxUint32
- func (i *Integer) UnmarshalBinary(b []byte) error {
- if len(b) != 4 {
- return errors.New("expected 4 bytes")
- }
- *i = Integer(binary.BigEndian.Uint32(b))
- return nil
- }
- func (i *Integer) Read(r io.Reader) error {
- var b [4]byte
- n, err := io.ReadFull(r, b[:])
- if err == nil {
- if n != 4 {
- panic(n)
- }
- return i.UnmarshalBinary(b[:])
- }
- return err
- }
- // It's perfectly fine to cast these to an int. TODO: Or is it?
- func (i Integer) Int() int {
- return int(i)
- }
- func (i Integer) Uint64() uint64 {
- return uint64(i)
- }
- func (i Integer) Uint32() uint32 {
- return uint32(i)
- }
|