package node import "unsafe" const ( headerSize = 24 streamData = 1 streamRouting = 2 ) type header struct { Counter uint64 // Init with fasttime.Now() << 30 to ensure monotonic. SourceIP byte DestIP byte Forward byte Stream byte // See stream* constants. DataSize uint16 // Data size following associated data. } func (hdr *header) Parse(nb []byte) { hdr.Counter = *(*uint64)(unsafe.Pointer(&nb[0])) hdr.SourceIP = nb[8] hdr.DestIP = nb[9] hdr.Forward = nb[10] hdr.Stream = nb[11] hdr.DataSize = *(*uint16)(unsafe.Pointer(&nb[12])) } func (hdr header) Marshal(buf []byte) { *(*uint64)(unsafe.Pointer(&buf[0])) = hdr.Counter buf[8] = hdr.SourceIP buf[9] = hdr.DestIP buf[10] = hdr.Forward buf[11] = hdr.Stream *(*uint16)(unsafe.Pointer(&buf[12])) = hdr.DataSize }