diff options
author | 2022-01-03 17:37:09 +0100 | |
---|---|---|
committer | 2022-01-03 17:37:09 +0100 | |
commit | e08c0e55eec777b9bf1eb907c78cecd4c8859c8e (patch) | |
tree | af7899d1038c6980c63ac43dfb7f338c32970b6f /vendor/codeberg.org/gruf/go-runners/context.go | |
parent | fiddle around with workers (diff) | |
download | gotosocial-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.go | 36 |
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 +} |