diff options
Diffstat (limited to 'pkg/server/queue')
| -rw-r--r-- | pkg/server/queue/queue.go | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/pkg/server/queue/queue.go b/pkg/server/queue/queue.go index 979fa33..4b69e3a 100644 --- a/pkg/server/queue/queue.go +++ b/pkg/server/queue/queue.go @@ -37,6 +37,30 @@ func (r *reader) Read(p []byte) (int, error) { return n, nil } +func (r *reader) WriteTo(w io.Writer) (int64, error) { + if writer, ok := w.(*writer); ok { + if len(r.b) > 0 { + writer.q <- r.b + } + + return 0, Copy(r.q, writer.q) + } + + if len(r.b) > 0 { + if _, err := w.Write(r.b); err != nil { + return 0, err + } + } + + for b := range r.q { + if _, err := w.Write(b); err != nil { + return 0, err + } + } + + return 0, nil +} + func (q Q) Writer() io.Writer { return &writer{q: q} } |
