From 7bc2b482b93054d72903838ae96f323c1bc9c3ce Mon Sep 17 00:00:00 2001 From: Tom Guinther <tguinther@gfxlabs.io> Date: Fri, 26 Jul 2024 11:48:42 -0400 Subject: [PATCH] add an eofReader and CloneDecoder function so I can "preview" packets w/o effecting stream --- lib/fed/decoder.go | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/lib/fed/decoder.go b/lib/fed/decoder.go index 8cafd3a6..920e4d29 100644 --- a/lib/fed/decoder.go +++ b/lib/fed/decoder.go @@ -10,6 +10,14 @@ import ( "gfx.cafe/gfx/pggat/lib/util/decorator" ) +type eofReader struct{} + +func (*eofReader) Read(p []byte) (n int, err error) { + return 0, io.EOF +} + +var _eofReader = &eofReader{} + type Decoder struct { noCopy decorator.NoCopy @@ -30,6 +38,23 @@ func NewDecoder(r io.Reader) *Decoder { return d } +func CloneDecoder(d *Decoder, r io.Reader) *Decoder { + if r == nil { + r = _eofReader + } + + return &Decoder{ + buffer: d.buffer, + bufferWrite: d.bufferWrite, + bufferRead: d.bufferRead, + packetType: d.packetType, + packetLength: d.packetLength, + packetPos: d.packetPos, + decodeBuf: d.decodeBuf, + reader: r, + } +} + func (T *Decoder) Reset(r io.Reader) { T.packetLength = 0 T.packetPos = 0 -- GitLab