summaryrefslogtreecommitdiff
path: root/pkg/server/queue
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/server/queue')
-rw-r--r--pkg/server/queue/queue.go24
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}
}