summaryrefslogtreecommitdiff
path: root/vendor/github.com/jackc/pgx/v5/pgconn/ctxwatch
diff options
context:
space:
mode:
authorLibravatar Terin Stock <terinjokes@gmail.com>2025-03-09 17:47:56 +0100
committerLibravatar Terin Stock <terinjokes@gmail.com>2025-12-01 22:08:04 +0100
commitb1af8fd87760b34e3ff2fd3bda38f211815a0473 (patch)
tree9317fad1a7ec298d7a8d2678e4e422953bbc6f33 /vendor/github.com/jackc/pgx/v5/pgconn/ctxwatch
parent[chore] update URLs to forked source (diff)
downloadgotosocial-b1af8fd87760b34e3ff2fd3bda38f211815a0473.tar.xz
[chore] remove vendor
Diffstat (limited to 'vendor/github.com/jackc/pgx/v5/pgconn/ctxwatch')
-rw-r--r--vendor/github.com/jackc/pgx/v5/pgconn/ctxwatch/context_watcher.go80
1 files changed, 0 insertions, 80 deletions
diff --git a/vendor/github.com/jackc/pgx/v5/pgconn/ctxwatch/context_watcher.go b/vendor/github.com/jackc/pgx/v5/pgconn/ctxwatch/context_watcher.go
deleted file mode 100644
index db8884eb8..000000000
--- a/vendor/github.com/jackc/pgx/v5/pgconn/ctxwatch/context_watcher.go
+++ /dev/null
@@ -1,80 +0,0 @@
-package ctxwatch
-
-import (
- "context"
- "sync"
-)
-
-// ContextWatcher watches a context and performs an action when the context is canceled. It can watch one context at a
-// time.
-type ContextWatcher struct {
- handler Handler
- unwatchChan chan struct{}
-
- lock sync.Mutex
- watchInProgress bool
- onCancelWasCalled bool
-}
-
-// NewContextWatcher returns a ContextWatcher. onCancel will be called when a watched context is canceled.
-// OnUnwatchAfterCancel will be called when Unwatch is called and the watched context had already been canceled and
-// onCancel called.
-func NewContextWatcher(handler Handler) *ContextWatcher {
- cw := &ContextWatcher{
- handler: handler,
- unwatchChan: make(chan struct{}),
- }
-
- return cw
-}
-
-// Watch starts watching ctx. If ctx is canceled then the onCancel function passed to NewContextWatcher will be called.
-func (cw *ContextWatcher) Watch(ctx context.Context) {
- cw.lock.Lock()
- defer cw.lock.Unlock()
-
- if cw.watchInProgress {
- panic("Watch already in progress")
- }
-
- cw.onCancelWasCalled = false
-
- if ctx.Done() != nil {
- cw.watchInProgress = true
- go func() {
- select {
- case <-ctx.Done():
- cw.handler.HandleCancel(ctx)
- cw.onCancelWasCalled = true
- <-cw.unwatchChan
- case <-cw.unwatchChan:
- }
- }()
- } else {
- cw.watchInProgress = false
- }
-}
-
-// Unwatch stops watching the previously watched context. If the onCancel function passed to NewContextWatcher was
-// called then onUnwatchAfterCancel will also be called.
-func (cw *ContextWatcher) Unwatch() {
- cw.lock.Lock()
- defer cw.lock.Unlock()
-
- if cw.watchInProgress {
- cw.unwatchChan <- struct{}{}
- if cw.onCancelWasCalled {
- cw.handler.HandleUnwatchAfterCancel()
- }
- cw.watchInProgress = false
- }
-}
-
-type Handler interface {
- // HandleCancel is called when the context that a ContextWatcher is currently watching is canceled. canceledCtx is the
- // context that was canceled.
- HandleCancel(canceledCtx context.Context)
-
- // HandleUnwatchAfterCancel is called when a ContextWatcher that called HandleCancel on this Handler is unwatched.
- HandleUnwatchAfterCancel()
-}