utils

package
v0.0.0-...-6e04e41 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 20, 2024 License: ISC Imports: 8 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// MaxVarIntPayload is the maximum payload size for a variable length integer.
	MaxVarIntPayload = 9

	CommandNameSize = 12
)

Variables

This section is empty.

Functions

func RandomUint64

func RandomUint64() (uint64, error)

RandomUint64 returns a cryptographically random uint64 value.

func ReadElements

func ReadElements(r io.Reader, elements ...interface{}) error

ReadElements reads multiple items from r. It is equivalent to multiple calls to readElement.

func ReadVarBytes

func ReadVarBytes(r io.Reader, maxAllowed uint32,
	fieldName string) ([]byte, error)

ReadVarBytes reads a variable length byte array. A byte array is encoded as a varInt containing the length of the array followed by the bytes themselves. An error is returned if the length is greater than the passed maxAllowed parameter which helps protect against memory exhaustion attacks and forced panics through malformed messages. The fieldName parameter is only used for the error message so it provides more context in the error.

func ReadVarBytesBuf

func ReadVarBytesBuf(r io.Reader, buf []byte, maxAllowed uint32,
	fieldName string) ([]byte, error)

ReadVarBytesBuf reads a variable length byte array. A byte array is encoded as a varInt containing the length of the array followed by the bytes themselves. An error is returned if the length is greater than the passed maxAllowed parameter which helps protect against memory exhaustion attacks and forced panics through malformed messages. The fieldName parameter is only used for the error message so it provides more context in the error. If b is non-nil, the provided buffer will be used for serializing small values. Otherwise a buffer will be drawn from the binarySerializer's pool and return when the method finishes.

func ReadVarInt

func ReadVarInt(r io.Reader) (uint64, error)

ReadVarInt reads a variable length integer from r and returns it as a uint64.

func ReadVarIntBuf

func ReadVarIntBuf(r io.Reader, buf []byte) (uint64, error)

ReadVarIntBuf reads a variable length integer from r using a preallocated scratch buffer and returns it as a uint64.

NOTE: buf MUST at least an 8-byte slice.

func ReadVarString

func ReadVarString(r io.Reader, maxAllowed uint64) (string, error)

ReadVarString reads a variable length string from r and returns it as a Go string. A variable length string is encoded as a variable length integer containing the length of the string followed by the bytes that represent the string itself. An error is returned if the length is greater than the maximum block payload size since it helps protect against memory exhaustion attacks and forced panics through malformed messages.

func VarIntSerializeSize

func VarIntSerializeSize(val uint64) int

VarIntSerializeSize returns the number of bytes it would take to serialize val as a variable length integer.

func WriteElements

func WriteElements(w io.Writer, elements ...interface{}) error

WriteElements writes multiple items to w. It is equivalent to multiple calls to writeElement.

func WriteVarBytes

func WriteVarBytes(w io.Writer, bytes []byte) error

WriteVarBytes serializes a variable length byte array to w as a varInt containing the number of bytes, followed by the bytes themselves.

func WriteVarBytesBuf

func WriteVarBytesBuf(w io.Writer, bytes, buf []byte) error

WriteVarBytesBuf serializes a variable length byte array to w as a varInt containing the number of bytes, followed by the bytes themselves. If b is non-nil, the provided buffer will be used for serializing small values. Otherwise a buffer will be drawn from the binarySerializer's pool and return when the method finishes.

func WriteVarInt

func WriteVarInt(w io.Writer, val uint64) error

WriteVarInt serializes val to w using a variable number of bytes depending on its value.

func WriteVarIntBuf

func WriteVarIntBuf(w io.Writer, val uint64, buf []byte) error

WriteVarIntBuf serializes val to w using a variable number of bytes depending on its value using a preallocated scratch buffer.

NOTE: buf MUST at least an 8-byte slice.

func WriteVarString

func WriteVarString(w io.Writer, str string) error

WriteVarString serializes str to w as a variable length integer containing the length of the string followed by the bytes that represent the string itself.

Types

type Int64Time

type Int64Time time.Time

Int64Time represents a unix timestamp encoded with an int64. It is used as a way to signal the readElement function how to decode a timestamp into a Go time.Time since it is otherwise ambiguous.

type Uint32Time

type Uint32Time time.Time

Uint32Time represents a unix timestamp encoded with a uint32. It is used as a way to signal the readElement function how to decode a timestamp into a Go time.Time since it is otherwise ambiguous.

type VarByte

type VarByte []byte

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL