package node import "unsafe" // ---------------------------------------------------------------------------- const ( headerSize = 12 controlStreamID = 2 controlHeaderSize = 24 controlCipherOverhead = 16 dataStreamID = 1 dataHeaderSize = 12 dataCipherOverhead = 16 forwardStreamID = 3 ) type xHeader struct { StreamID byte Counter uint64 // Init with fasttime.Now() << 30 to ensure monotonic. SourceIP byte DestIP byte } func (h *xHeader) Parse(b []byte) { h.StreamID = b[0] h.Counter = *(*uint64)(unsafe.Pointer(&b[1])) h.SourceIP = b[9] h.DestIP = b[10] } func (h *xHeader) Marshal(buf []byte) { buf[0] = h.StreamID *(*uint64)(unsafe.Pointer(&buf[1])) = h.Counter buf[9] = h.SourceIP buf[10] = h.DestIP buf[11] = 0 }