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:
21
pipeline.go
21
pipeline.go
@ -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
|
||||
}
|
||||
|
Reference in New Issue
Block a user