# Functions

CloseFile closes the given file and report the possible error only if the given error `err` is not already set.
CreateLockFile attempt to lock the given file, creating it if necessary.
DecodeChannels decodes from the given byte array the list of channel names and return them as an array of strings.
EnsureBufBigEnough checks that given buffer is big enough to hold 'needed' bytes, otherwise returns a buffer of a size of at least 'needed' bytes.
FriendlyBytes returns a string with the given bytes int64 represented as a size, such as 1KB, 10MB, etc...
IsChannelNameLiteral returns true if the channel name is a literal (that is, it does not contain any wildcard).
IsChannelNameValid returns false if any of these conditions for the channel name apply: - is empty - contains the `/` character - token separator `.` is first or last - there are two consecutives token separators `.` if wildcardsAllowed is false: - contains wildcards `*` or `>` if wildcardsAllowed is true: - '*' or '>' are not a token in their own - `>` is not the last token.
NewBackoffTimeCheck creates an instance of BackoffTimeCheck.
NewSublist creates a default sublist.
ReadInt reads an int (4 bytes) from the reader using ByteOrder.
SendChannelsList sends the list of channels to the given subject, possibly splitting the list in several requests if it cannot fit in a single message.
WriteInt writes an int (4 bytes) to the given writer using ByteOrder.

# Constants

RaceEnabled indicates that program/tests are running with race detection enabled or not.

# Variables

ByteOrder specifies how to convert byte sequences into 16-, 32-, or 64-bit unsigned integers.
Sublist related errors.
Sublist related errors.
ErrUnableToLockNow is used to indicate that a lock cannot be immediately acquired.

# Structs

BackoffTimeCheck allows to execute some code, but not too often.
A Sublist stores and efficiently retrieves subscriptions.

# Interfaces

LockFile is an interface for lock files utility.