use WithoutCancel interface w/ Pop(nil)

This commit is contained in:
James DeFelice 2015-12-12 15:33:48 +00:00
parent af95e3fe0e
commit 26593f1a6a
4 changed files with 11 additions and 10 deletions

View File

@ -441,7 +441,7 @@ func (s *offerStorage) ageOffers() {
}
func (s *offerStorage) nextListener() *offerListener {
obj := s.listeners.Pop(nil)
obj := s.listeners.Pop(queue.WithoutCancel())
if listen, ok := obj.(*offerListener); !ok {
//programming error
panic(fmt.Sprintf("unexpected listener object %v", obj))

View File

@ -358,7 +358,7 @@ func TestDFIFO_sanity_check(t *testing.T) {
// pop last
before := time.Now()
x := df.Pop(nil)
x := df.Pop(WithoutCancel())
assert.Equal(a.(*testjob).instance, 2)
now := time.Now()
@ -395,7 +395,7 @@ func TestDFIFO_Offer(t *testing.T) {
}
before := time.Now()
x := dq.Pop(nil)
x := dq.Pop(WithoutCancel())
now := time.Now()
waitPeriod := now.Sub(before)

View File

@ -75,7 +75,7 @@ func TestFIFO_basic(t *testing.T) {
lastInt := _int(0)
lastUint := _uint(0)
for i := 0; i < amount*2; i++ {
switch obj := f.Pop(nil).(type) {
switch obj := f.Pop(WithoutCancel()).(type) {
case _int:
if obj <= lastInt {
t.Errorf("got %v (int) out of order, last was %v", obj, lastInt)
@ -100,7 +100,7 @@ func TestFIFO_addUpdate(t *testing.T) {
got := make(chan *testObj, 2)
go func() {
for {
got <- f.Pop(nil).(*testObj)
got <- f.Pop(WithoutCancel()).(*testObj)
}
}()
@ -126,7 +126,7 @@ func TestFIFO_addReplace(t *testing.T) {
got := make(chan *testObj, 2)
go func() {
for {
got <- f.Pop(nil).(*testObj)
got <- f.Pop(WithoutCancel()).(*testObj)
}
}()
@ -158,24 +158,24 @@ func TestFIFO_detectLineJumpers(t *testing.T) {
done := make(chan struct{})
go func() {
defer close(done)
if e, a := 13, f.Pop(nil).(*testObj).value; a != e {
if e, a := 13, f.Pop(WithoutCancel()).(*testObj).value; a != e {
err = fmt.Errorf("expected %d, got %d", e, a)
return
}
f.Add(&testObj{"foo", 14}) // ensure foo doesn't jump back in line
if e, a := 1, f.Pop(nil).(*testObj).value; a != e {
if e, a := 1, f.Pop(WithoutCancel()).(*testObj).value; a != e {
err = fmt.Errorf("expected %d, got %d", e, a)
return
}
if e, a := 30, f.Pop(nil).(*testObj).value; a != e {
if e, a := 30, f.Pop(WithoutCancel()).(*testObj).value; a != e {
err = fmt.Errorf("expected %d, got %d", e, a)
return
}
if e, a := 14, f.Pop(nil).(*testObj).value; a != e {
if e, a := 14, f.Pop(WithoutCancel()).(*testObj).value; a != e {
err = fmt.Errorf("expected %d, got %d", e, a)
return
}

View File

@ -102,4 +102,5 @@ type UniqueDeadlined interface {
Deadlined
}
// WithoutCancel returns a chan that may never be closed and always blocks
func WithoutCancel() <-chan struct{} { return nil }