Documentation ¶
Index ¶
- Constants
- func Marshal(v interface{}) ([]byte, error)
- func MustMarshal(v interface{}) []byte
- func Unmarshal(data []byte, v interface{}) (err error)
- type Bytes
- type Decoder
- type Encoder
- type ErrUnusedTrailingBytes
- type MarshalTypeError
- type Marshaler
- type MarshalerError
- type MaxStrLen
- type SyntaxError
- type UnmarshalFieldError
- type UnmarshalInvalidArgError
- type UnmarshalTypeError
- type Unmarshaler
- type UnmarshalerError
Constants ¶
const DefaultDecodeMaxStrLen = 1<<27 - 1 // ~128MiB
The default bencode string length limit. This is a poor attempt to prevent excessive memory allocation when parsing, but also leaves the window open to implement a better solution.
Variables ¶
This section is empty.
Functions ¶
func Marshal ¶
Marshal the value 'v' to the bencode form, return the result as []byte and an error if any.
func MustMarshal ¶
func MustMarshal(v interface{}) []byte
func Unmarshal ¶
Unmarshal the bencode value in the 'data' to a value pointed by the 'v' pointer, return a non-nil error if any. If there are trailing bytes, this results in ErrUnusedTrailingBytes, but the value will be valid. It's probably more consistent to use Decoder.Decode if you want to rely on this behaviour (inspired by Rust's serde here).
Types ¶
type Decoder ¶
type Decoder struct { // Maximum parsed bencode string length. Defaults to DefaultMaxStrLen if zero. MaxStrLen MaxStrLen // Sum of bytes used to Decode values. Offset int64 // contains filtered or unexported fields }
func NewDecoder ¶
type ErrUnusedTrailingBytes ¶
type ErrUnusedTrailingBytes struct {
NumUnusedBytes int
}
func (ErrUnusedTrailingBytes) Error ¶
func (me ErrUnusedTrailingBytes) Error() string
type MarshalTypeError ¶
In case if marshaler cannot encode a type, it will return this error. Typical example of such type is float32/float64 which has no bencode representation.
func (*MarshalTypeError) Error ¶
func (e *MarshalTypeError) Error() string
type Marshaler ¶
Any type which implements this interface, will be marshaled using the specified method.
type MarshalerError ¶
A non-nil error was returned after calling MarshalBencode on a type which implements the Marshaler interface.
func (*MarshalerError) Error ¶
func (e *MarshalerError) Error() string
type SyntaxError ¶
Malformed bencode input, unmarshaler failed to parse it.
func (*SyntaxError) Error ¶
func (e *SyntaxError) Error() string
type UnmarshalFieldError ¶
type UnmarshalFieldError struct { Key string Type reflect.Type Field reflect.StructField }
Unmarshaler tried to write to an unexported (therefore unwritable) field.
func (*UnmarshalFieldError) Error ¶
func (e *UnmarshalFieldError) Error() string
type UnmarshalInvalidArgError ¶
Unmarshal argument must be a non-nil value of some pointer type.
func (*UnmarshalInvalidArgError) Error ¶
func (e *UnmarshalInvalidArgError) Error() string
type UnmarshalTypeError ¶
Unmarshaler spotted a value that was not appropriate for a given Go value.
func (*UnmarshalTypeError) Error ¶
func (e *UnmarshalTypeError) Error() string
This could probably be a value type, but we may already have users assuming that it's passed by pointer.
type Unmarshaler ¶
Any type which implements this interface, will be unmarshaled using the specified method.
type UnmarshalerError ¶
A non-nil error was returned after calling UnmarshalBencode on a type which implements the Unmarshaler interface.
func (*UnmarshalerError) Error ¶
func (e *UnmarshalerError) Error() string