Documentation ¶
Index ¶
- Constants
- func Decode(data []byte, v any) error
- func Marshal(v any) ([]byte, error)
- func RegisterEnums(enums ...Object)
- func RegisterObjects(obs ...Object)
- type Decoder
- func (d *Decoder) DumpWithoutRead() ([]byte, error)
- func (d *Decoder) GetRestOfMessage() ([]byte, error)
- func (d *Decoder) PopBool() bool
- func (d *Decoder) PopCRC() uint32
- func (d *Decoder) PopDouble() float64
- func (d *Decoder) PopInt() int32
- func (d *Decoder) PopLong() int64
- func (d *Decoder) PopMessage() []byte
- func (d *Decoder) PopNull()
- func (d *Decoder) PopRawBytes(size int) []byte
- func (d *Decoder) PopUint() uint32
- func (d *Decoder) PopVector(as reflect.Type) any
- type Encoder
- func (e *Encoder) CheckErr() error
- func (e *Encoder) PutBool(v bool)
- func (e *Encoder) PutCRC(v uint32)
- func (e *Encoder) PutDouble(v float64)
- func (e *Encoder) PutInt(v int32)
- func (e *Encoder) PutLong(v int64)
- func (e *Encoder) PutMessage(msg []byte)
- func (e *Encoder) PutRawBytes(b []byte)
- func (e *Encoder) PutString(msg string)
- func (e *Encoder) PutUint(v uint32)
- func (e *Encoder) PutVector(v any)
- type ErrRegisteredObjectNotFound
- type ErrorPartialWrite
- type FlagIndexGetter
- type Int128
- type Int256
- type Marshaler
- type Object
- type Unmarshaler
Constants ¶
const ( WordLen = 4 // размер слова в TL (32 бита) LongLen = WordLen * 2 // int64 8 байт занимает DoubleLen = WordLen * 2 // float64 8 байт занимает Int128Len = WordLen * 4 // int128 16 байт Int256Len = WordLen * 8 // int256 32 байт // Блядские магические числа FuckingMagicNumber = 0xfe // 253 элемента максимум можно закодировать в массиве элементов // https://core.telegram.org/schema/mtproto CrcVector = 0x1cb5c415 CrcFalse = 0xbc799737 CrcTrue = 0x997275b5 CrcNull = 0x56730bcc )
Variables ¶
This section is empty.
Functions ¶
func RegisterEnums ¶
func RegisterEnums(enums ...Object)
func RegisterObjects ¶
func RegisterObjects(obs ...Object)
Types ¶
type Decoder ¶
type Decoder struct {
// contains filtered or unexported fields
}
A Decoder reads and decodes TL values from an input stream.
func NewDecoder ¶
NewDecoder returns a new decoder that reads from r.
func (*Decoder) DumpWithoutRead ¶
func (*Decoder) GetRestOfMessage ¶
func (*Decoder) PopMessage ¶
func (*Decoder) PopRawBytes ¶
type Encoder ¶
type Encoder struct {
// contains filtered or unexported fields
}
func NewEncoder ¶
func (*Encoder) CheckErr ¶
CheckErr must call after encoding has been finished. if this func returns not nil value, encoding has failed, and you shouldn't use its result
func (*Encoder) PutBool ¶
PutBool очень специфичный тип, т.к. есть отдельный конструктор под true и false, то можно считать, что это две crc константы
func (*Encoder) PutCRC ¶
PutCRC is an alias for Encoder.PutUint. It uses only for understanding what your code do (like self-documented code)
func (*Encoder) PutMessage ¶
func (*Encoder) PutRawBytes ¶
type ErrRegisteredObjectNotFound ¶
func (ErrRegisteredObjectNotFound) Error ¶
func (e ErrRegisteredObjectNotFound) Error() string
type ErrorPartialWrite ¶
func (*ErrorPartialWrite) Error ¶
func (e *ErrorPartialWrite) Error() string
type FlagIndexGetter ¶
type FlagIndexGetter interface {
FlagIndex() int
}
type Int128 ¶
Int128 is alias-like type for fixed size of big int (1024 bit value). It using only for tl objects encoding cause native big.Int isn't supported for en(de)coding
func (*Int128) MarshalTL ¶
MarshalTL implements tl marshaler from this package. Just don't use it by your hands, tl.Encoder does all what you need
func (*Int128) UnmarshalTL ¶
UnmarshalTL implements tl unmarshaler from this package. Just don't use it by your hands, tl.Decoder does all what you need
type Int256 ¶
Int256 is alias-like type for fixed size of big int (2048 bit value). It using only for tl objects encoding cause native big.Int isn't supported for en(de)coding
func (*Int256) MarshalTL ¶
MarshalTL implements tl marshaler from this package. Just don't use it by your hands, tl.Encoder does all what you need
func (*Int256) UnmarshalTL ¶
UnmarshalTL implements tl unmarshaler from this package. Just don't use it by your hands, tl.Decoder does all what you need