summaryrefslogtreecommitdiff
path: root/vendor/codeberg.org/gruf/go-runners/context.go
diff options
context:
space:
mode:
authorLibravatar tsmethurst <tobi.smethurst@protonmail.com>2022-01-03 17:37:09 +0100
committerLibravatar tsmethurst <tobi.smethurst@protonmail.com>2022-01-03 17:37:09 +0100
commite08c0e55eec777b9bf1eb907c78cecd4c8859c8e (patch)
treeaf7899d1038c6980c63ac43dfb7f338c32970b6f /vendor/codeberg.org/gruf/go-runners/context.go
parentfiddle around with workers (diff)
downloadgotosocial-e08c0e55eec777b9bf1eb907c78cecd4c8859c8e.tar.xz
add gruf worker pool
Diffstat (limited to 'vendor/codeberg.org/gruf/go-runners/context.go')
-rw-r--r--vendor/codeberg.org/gruf/go-runners/context.go36
1 files changed, 36 insertions, 0 deletions
diff --git a/vendor/codeberg.org/gruf/go-runners/context.go b/vendor/codeberg.org/gruf/go-runners/context.go
new file mode 100644
index 000000000..edb695060
--- /dev/null
+++ b/vendor/codeberg.org/gruf/go-runners/context.go
@@ -0,0 +1,36 @@
+package runners
+
+import (
+ "context"
+ "time"
+)
+
+// ContextWithCancel returns a new context.Context impl with cancel.
+func ContextWithCancel() (context.Context, context.CancelFunc) {
+ ctx := make(cancelctx)
+ return ctx, func() { close(ctx) }
+}
+
+// cancelctx is the simplest possible cancellable context.
+type cancelctx (chan struct{})
+
+func (cancelctx) Deadline() (time.Time, bool) {
+ return time.Time{}, false
+}
+
+func (ctx cancelctx) Done() <-chan struct{} {
+ return ctx
+}
+
+func (ctx cancelctx) Err() error {
+ select {
+ case <-ctx:
+ return context.Canceled
+ default:
+ return nil
+ }
+}
+
+func (cancelctx) Value(key interface{}) interface{} {
+ return nil
+}