use SKIP instead of LAST for fetching messages after polling
This commit is contained in:
parent
d69f375a57
commit
7d28b3b3e0
2 changed files with 42 additions and 2 deletions
32
command.go
32
command.go
|
|
@ -55,6 +55,38 @@ func (app *App) Poll(since int) (num int, err error) {
|
|||
return num, nil
|
||||
}
|
||||
|
||||
func (app *App) Skip(since int) (num int, err error) {
|
||||
if _, err := fmt.Fprintf(app.conn, "SKIP %d\n", since); err != nil {
|
||||
return 0, err
|
||||
}
|
||||
|
||||
if !app.scanner.Scan() {
|
||||
return 0, app.scanner.Err()
|
||||
}
|
||||
num, err = strconv.Atoi(app.scanner.Text())
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
|
||||
for range num {
|
||||
if !app.scanner.Scan() {
|
||||
return 0, err
|
||||
}
|
||||
app.incoming <- Message(app.scanner.Text())
|
||||
}
|
||||
|
||||
if !app.scanner.Scan() {
|
||||
return 0, app.scanner.Err()
|
||||
}
|
||||
last, err := strconv.Atoi(app.scanner.Text())
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
app.incoming <- Last(last)
|
||||
|
||||
return num, nil
|
||||
}
|
||||
|
||||
func (app *App) Last(n int) (num int, err error) {
|
||||
if n == 0 {
|
||||
return 0, nil
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue