summaryrefslogtreecommitdiff
path: root/payload.go
diff options
context:
space:
mode:
authorWolfy-J <[email protected]>2018-06-11 21:53:43 +0300
committerWolfy-J <[email protected]>2018-06-11 21:53:43 +0300
commit230fc1eccaae7aa8764a2ab0f098bc72c07e3322 (patch)
treef3d4d88a571e466d8e6fec41b7e178f6c8de0a97 /payload.go
parent57bddc9e18ace920a4a7293aedbe2d023c650b43 (diff)
no library dependency
Diffstat (limited to 'payload.go')
-rw-r--r--payload.go27
1 files changed, 26 insertions, 1 deletions
diff --git a/payload.go b/payload.go
index 4b5003e4..9e1366df 100644
--- a/payload.go
+++ b/payload.go
@@ -1,5 +1,9 @@
package roadrunner
+import (
+ "bufio"
+)
+
// Payload carries binary header and body to workers and
// back to the server.
type Payload struct {
@@ -9,10 +13,31 @@ type Payload struct {
// body contains binary payload to be processed by worker.
Body []byte
- // add io.Reader support for streamed requests and responses.
+ // attached when worker responds with the stream
+ stream *bufio.Reader
+
+ // close callback will be called when payload is closed
+ cc func()
}
// String returns payload body as string
func (p *Payload) String() string {
return string(p.Body)
}
+
+// Stream returns true is payload is streaming.
+func (p *Payload) Stream() bool {
+ return p.stream != nil
+}
+
+// Stream returns associated stream.
+func (p *Payload) Read(d []byte) (n int, err error) {
+ return p.stream.Read(d)
+}
+
+// Close closes underlying stream and notifies stream end watchers.
+func (p *Payload) Close() {
+ if p.cc != nil {
+ p.cc()
+ }
+}