aboutsummaryrefslogtreecommitdiff
path: root/nix2/state.go
diff options
context:
space:
mode:
Diffstat (limited to 'nix2/state.go')
-rw-r--r--nix2/state.go33
1 files changed, 33 insertions, 0 deletions
diff --git a/nix2/state.go b/nix2/state.go
new file mode 100644
index 0000000..a846ea4
--- /dev/null
+++ b/nix2/state.go
@@ -0,0 +1,33 @@
+package nix2
+
+import (
+ "sync"
+)
+
+type taskStore struct {
+ store map[string]*taskHandle
+ lock sync.RWMutex
+}
+
+func newTaskStore() *taskStore {
+ return &taskStore{store: map[string]*taskHandle{}}
+}
+
+func (ts *taskStore) Set(id string, handle *taskHandle) {
+ ts.lock.Lock()
+ defer ts.lock.Unlock()
+ ts.store[id] = handle
+}
+
+func (ts *taskStore) Get(id string) (*taskHandle, bool) {
+ ts.lock.RLock()
+ defer ts.lock.RUnlock()
+ t, ok := ts.store[id]
+ return t, ok
+}
+
+func (ts *taskStore) Delete(id string) {
+ ts.lock.Lock()
+ defer ts.lock.Unlock()
+ delete(ts.store, id)
+}