-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy patherrors.go
50 lines (38 loc) · 821 Bytes
/
errors.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
package main
import "github.com/garyburd/redigo/redis"
type (
ErrorReader struct {
pool *redis.Pool
errQueue string
}
)
//Creates new ErrorReader
func NewErrorReader(p *redis.Pool, eq string) *ErrorReader {
return &ErrorReader{
pool: p,
errQueue: eq,
}
}
//Returns number of errors
func (r *ErrorReader) Count() int64 {
pc := r.pool.Get()
defer pc.Close()
d, err := pc.Do("LLEN", r.errQueue)
LogIf(err)
q, err := redis.Int64(d, err)
LogIf(err)
return q
}
//Read all errors and clear list
func (r *ErrorReader) ReadErrors() (list []string) {
pc := r.pool.Get()
defer pc.Close()
pc.Send("MULTI")
pc.Send("LRANGE", r.errQueue, "0", "-1")
pc.Send("DEL", r.errQueue)
v, err := pc.Do("EXEC")
PanicIf(err)
_, err = redis.Scan(v.([]interface{}), &list)
PanicIf(err)
return list
}