Documentation ¶
Index ¶
- Constants
- type Flag
- type Frame
- func (f *Frame) AppendOptions(opts []byte)
- func (f *Frame) Bytes() []byte
- func (f *Frame) Header() []byte
- func (f *Frame) Payload() []byte
- func (f *Frame) ReadFlags() byte
- func (f *Frame) ReadHL() byte
- func (f *Frame) ReadOptions() []uint32
- func (f *Frame) ReadPayloadLen() uint32
- func (f *Frame) ReadVersion() byte
- func (f *Frame) VerifyCRC() bool
- func (f *Frame) WriteCRC()
- func (f *Frame) WriteFlags(flags ...Flag)
- func (f *Frame) WriteOptions(options ...uint32)
- func (f *Frame) WritePayload(data []byte)
- func (f *Frame) WritePayloadLen(len uint32)
- func (f *Frame) WriteVersion(version Version)
- type Version
Constants ¶
const FRAME_OPTIONS_MAX_SIZE = 40 //nolint:stylecheck,golint
const WORD = 4 //nolint:stylecheck,golint
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Flag ¶
type Flag byte
const ( CONTROL Flag = 0x01 CODEC_RAW Flag = 0x04 //nolint:stylecheck,golint CODEC_JSON Flag = 0x08 //nolint:stylecheck,golint CODEC_MSGPACK Flag = 0x10 //nolint:stylecheck,golint CODEC_GOB Flag = 0x20 //nolint:stylecheck,golint ERROR Flag = 0x40 //nolint:stylecheck,golint RESERVED1 Flag = 0x80 )
BYTE flags, it means, that we can set multiply flags from this group using bitwise OR For example CONTEXT_SEPARATOR | CODEC_RAW
type Frame ¶
type Frame struct {
// contains filtered or unexported fields
}
Frame defines new user level package format.
func (*Frame) AppendOptions ¶
AppendOptions appends options to the header
func (*Frame) ReadHL ¶
The lower 4 bits of the 0th octet occupies our header len data. We should erase upper 4 bits, which contain information about Version To erase, we applying bitwise AND to the upper 4 bits and returning result
func (*Frame) ReadOptions ¶
f.readHL() - 2 needed to know actual options size we know, that 2 WORDS is minimal header len extra WORDS will add extra 32bits to the options (4 bytes)
func (*Frame) ReadPayloadLen ¶
LE format used to write Payload Using 4 bytes (2,3,4,5 bytes in the header)
func (*Frame) ReadVersion ¶
To read version, we should return our 4 upper bits to their original place 1111_0000 -> 0000_1111 (15)
func (*Frame) VerifyCRC ¶
Reading info from 6th byte and verifying it with calculated in-place. Should be equal. If not - drop the frame as incorrect.
func (*Frame) WriteCRC ¶
func (f *Frame) WriteCRC()
Calculating CRC and writing it to the 6th byte (7th reserved)
func (*Frame) WriteFlags ¶
func (*Frame) WriteOptions ¶
Options slice len should not be more than 10 (40 bytes)
func (*Frame) WritePayload ¶
func (*Frame) WritePayloadLen ¶
LE format used to write Payload Using 4 bytes (2,3,4,5 bytes in the header)
func (*Frame) WriteVersion ¶
To write version, we should made the following: 1. For example we have version 15 it's 0000_1111 (1 byte) 2. We should shift 4 lower bits to upper and write that to the 0th byte 3. The 0th byte should become 1111_0000, but it's not 240, it's only 15, because version only 4 bits len