summaryrefslogtreecommitdiff
path: root/vendor/codeberg.org/gruf/go-runners/context.go
diff options
context:
space:
mode:
authorLibravatar kim <89579420+NyaaaWhatsUpDoc@users.noreply.github.com>2022-02-12 18:27:58 +0000
committerLibravatar GitHub <noreply@github.com>2022-02-12 18:27:58 +0000
commit31935ee206107f077878d3cdb6a26b82436b6893 (patch)
tree2d522bf98013dc5a4539133561b645fd7457eb06 /vendor/codeberg.org/gruf/go-runners/context.go
parent[chore] Add nightly mirror to Codeberg.org (#392) (diff)
parentGo mod tidy (diff)
downloadgotosocial-31935ee206107f077878d3cdb6a26b82436b6893.tar.xz
Merge pull request #361 from superseriousbusiness/media_refactorv0.2.0
Refactor media handler to allow async media resolution
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
+}