1
0
mirror of https://github.com/redis/go-redis.git synced 2025-07-28 06:42:00 +03:00

pipeline now has its own interface "Pipelineable"

This commit is contained in:
Felipe Cavalcanti
2017-05-01 12:42:58 -03:00
parent 4c6e2ad9a0
commit 6fca4d5ad0
16 changed files with 70 additions and 42 deletions

View File

@ -9,6 +9,17 @@ import (
type pipelineExecer func([]Cmder) error
type Pipelineable interface {
Cmdable
StatefulCmdable
Process(cmd Cmder) error
Close() error
Discard() error
discard() error
Exec() ([]Cmder, error)
pipelined(fn func(Pipelineable) error) ([]Cmder, error)
}
// Pipeline implements pipelining as described in
// http://redis.io/topics/pipelining. It's safe for concurrent use
// by multiple goroutines.
@ -78,7 +89,7 @@ func (c *Pipeline) Exec() ([]Cmder, error) {
return cmds, c.exec(cmds)
}
func (c *Pipeline) pipelined(fn func(*Pipeline) error) ([]Cmder, error) {
func (c *Pipeline) pipelined(fn func(Pipelineable) error) ([]Cmder, error) {
if err := fn(c); err != nil {
return nil, err
}
@ -86,3 +97,11 @@ func (c *Pipeline) pipelined(fn func(*Pipeline) error) ([]Cmder, error) {
_ = c.Close()
return cmds, err
}
func (c *Pipeline) Pipelined(fn func(Pipelineable) error) ([]Cmder, error) {
return c.pipelined(fn)
}
func (c *Pipeline) Pipeline() Pipelineable {
return c
}