func (b *Buffer) updateMeta() { // First 8 bytes have the first frame offset, // next 8 bytes have the last frame offset, // next 8 bytes are the next sequence number, // next 4 bytes are the biggest data record we've seen, // next 8 bytes are the total data in the buffer. off := int(b.capacity) binary.PutLittleEndianUint64(b.data, off, b.first) binary.PutLittleEndianUint64(b.data, off+8, b.last) binary.PutLittleEndianUint64(b.data, off+16, b.nextSeq) binary.PutLittleEndianUint32(b.data, off+24, b.biggest) binary.PutLittleEndianUint64(b.data, off+28, b.length) }
func newFrame(seq uint64, data []byte) (frame, error) { if len(data) > int(maxBytes) { return nil, errFrameTooBig } var f frame = make([]byte, len(data)+total) binary.PutLittleEndianUint32(f, 0, uint32(len(f))) binary.PutLittleEndianUint64(f, size, seq) copy(f[total:], data) return f, nil }