package node import "unsafe" // ---------------------------------------------------------------------------- const ( headerSize = 12 controlStreamID = 2 controlHeaderSize = 24 dataStreamID = 1 dataHeaderSize = 12 ) type header struct { Version byte StreamID byte SourceIP byte DestIP byte Counter uint64 // Init with time.Now().Unix << 30 to ensure monotonic. } func (h *header) Parse(b []byte) { h.Version = b[0] h.StreamID = b[1] h.SourceIP = b[2] h.DestIP = b[3] h.Counter = *(*uint64)(unsafe.Pointer(&b[4])) } func (h *header) Marshal(buf []byte) { buf[0] = h.Version buf[1] = h.StreamID buf[2] = h.SourceIP buf[3] = h.DestIP *(*uint64)(unsafe.Pointer(&buf[4])) = h.Counter }