Add more details to ring buffer panics

git-svn-id: file:///srv/svn/repo/suika/trunk@138 f0ae65fe-ee39-954e-97ec-027ff2717ef4
This commit is contained in:
contact 2020-03-24 08:22:40 +00:00
parent 913e583b44
commit 0b2b5420c9

View File

@ -1,6 +1,7 @@
package soju
import (
"fmt"
"sync"
"gopkg.in/irc.v3"
@ -86,7 +87,7 @@ type RingConsumer struct {
// diff returns the number of pending messages. It assumes the Ring is locked.
func (rc *RingConsumer) diff() uint64 {
if rc.cur > rc.ring.cur {
panic("soju: consumer cursor greater than producer cursor")
panic(fmt.Sprintf("soju: consumer cursor (%v) greater than producer cursor (%v)", rc.cur, rc.ring.cur))
}
return rc.ring.cur - rc.cur
}
@ -112,7 +113,7 @@ func (rc *RingConsumer) Peek() *irc.Message {
i := int(rc.cur % rc.ring.cap)
msg := rc.ring.buffer[i]
if msg == nil {
panic("soju: unexpected nil ring buffer entry")
panic(fmt.Sprintf("soju: unexpected nil ring buffer entry at index %v", i))
}
return msg
}