aboutsummaryrefslogtreecommitdiff
path: root/ipc/namedpipe/namedpipe.go
diff options
context:
space:
mode:
authorBrad Fitzpatrick <bradfitz@tailscale.com>2022-08-30 07:43:11 -0700
committerBrad Fitzpatrick <bradfitz@tailscale.com>2022-08-30 09:24:09 -0700
commit020d65481bdc616d4654d33c9e833f0ed9fbe351 (patch)
tree60a726df8938313fb4e20309c0e8735be5979299 /ipc/namedpipe/namedpipe.go
parentd1d08426b27b57990b1ee6782794f56d2c002aa3 (diff)
downloadwireguard-go-bf/atomic/for-jason.tar.gz
wireguard-go-bf/atomic/for-jason.zip
all: use Go 1.19 and its atomic typesbf/atomic/for-jason
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
Diffstat (limited to 'ipc/namedpipe/namedpipe.go')
-rw-r--r--ipc/namedpipe/namedpipe.go10
1 files changed, 5 insertions, 5 deletions
diff --git a/ipc/namedpipe/namedpipe.go b/ipc/namedpipe/namedpipe.go
index 6db5ea3..92cc1ee 100644
--- a/ipc/namedpipe/namedpipe.go
+++ b/ipc/namedpipe/namedpipe.go
@@ -29,7 +29,7 @@ type pipe struct {
type messageBytePipe struct {
pipe
- writeClosed int32
+ writeClosed atomic.Bool
readEOF bool
}
@@ -51,17 +51,17 @@ func (f *pipe) SetDeadline(t time.Time) error {
// CloseWrite closes the write side of a message pipe in byte mode.
func (f *messageBytePipe) CloseWrite() error {
- if !atomic.CompareAndSwapInt32(&f.writeClosed, 0, 1) {
+ if !f.writeClosed.CompareAndSwap(false, true) {
return io.ErrClosedPipe
}
err := f.file.Flush()
if err != nil {
- atomic.StoreInt32(&f.writeClosed, 0)
+ f.writeClosed.Store(false)
return err
}
_, err = f.file.Write(nil)
if err != nil {
- atomic.StoreInt32(&f.writeClosed, 0)
+ f.writeClosed.Store(false)
return err
}
return nil
@@ -70,7 +70,7 @@ func (f *messageBytePipe) CloseWrite() error {
// Write writes bytes to a message pipe in byte mode. Zero-byte writes are ignored, since
// they are used to implement CloseWrite.
func (f *messageBytePipe) Write(b []byte) (int, error) {
- if atomic.LoadInt32(&f.writeClosed) != 0 {
+ if f.writeClosed.Load() {
return 0, io.ErrClosedPipe
}
if len(b) == 0 {