forked from quic-go/quic-go
allow stream.Read for streams that a RST was received for
and a lot of code improvements fixes #385
This commit is contained in:
22
utils/atomic_bool.go
Normal file
22
utils/atomic_bool.go
Normal file
@@ -0,0 +1,22 @@
|
||||
package utils
|
||||
|
||||
import "sync/atomic"
|
||||
|
||||
// An AtomicBool is an atomic bool
|
||||
type AtomicBool struct {
|
||||
v int32
|
||||
}
|
||||
|
||||
// Set sets the value
|
||||
func (a *AtomicBool) Set(value bool) {
|
||||
var n int32
|
||||
if value {
|
||||
n = 1
|
||||
}
|
||||
atomic.StoreInt32(&a.v, n)
|
||||
}
|
||||
|
||||
// Get gets the value
|
||||
func (a *AtomicBool) Get() bool {
|
||||
return atomic.LoadInt32(&a.v) != 0
|
||||
}
|
||||
29
utils/atomic_bool_test.go
Normal file
29
utils/atomic_bool_test.go
Normal file
@@ -0,0 +1,29 @@
|
||||
package utils
|
||||
|
||||
import (
|
||||
. "github.com/onsi/ginkgo"
|
||||
. "github.com/onsi/gomega"
|
||||
)
|
||||
|
||||
var _ = Describe("Atomic Bool", func() {
|
||||
var a *AtomicBool
|
||||
|
||||
BeforeEach(func() {
|
||||
a = &AtomicBool{}
|
||||
})
|
||||
|
||||
It("has the right default value", func() {
|
||||
Expect(a.Get()).To(BeFalse())
|
||||
})
|
||||
|
||||
It("sets the value to true", func() {
|
||||
a.Set(true)
|
||||
Expect(a.Get()).To(BeTrue())
|
||||
})
|
||||
|
||||
It("sets the value to false", func() {
|
||||
a.Set(true)
|
||||
a.Set(false)
|
||||
Expect(a.Get()).To(BeFalse())
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user