aboutsummaryrefslogtreecommitdiff
path: root/exec2/state.go
diff options
context:
space:
mode:
authorAlex Auvolat <alex@adnab.me>2022-11-28 12:24:07 +0100
committerAlex Auvolat <alex@adnab.me>2022-11-28 12:25:48 +0100
commit8977e5122acdb41e5e04f9d32338baf27fda6f49 (patch)
tree95185008b499abf4449ee1490bed54a2c2f1e1ec /exec2/state.go
parenta9e5003ab305675d6be3c0f032772d0de38df969 (diff)
downloadnomad-driver-nix2-8977e5122acdb41e5e04f9d32338baf27fda6f49.tar.gz
nomad-driver-nix2-8977e5122acdb41e5e04f9d32338baf27fda6f49.zip
rename things
Diffstat (limited to 'exec2/state.go')
-rw-r--r--exec2/state.go36
1 files changed, 36 insertions, 0 deletions
diff --git a/exec2/state.go b/exec2/state.go
new file mode 100644
index 0000000..30f10d7
--- /dev/null
+++ b/exec2/state.go
@@ -0,0 +1,36 @@
+package hello
+
+import (
+ "sync"
+)
+
+// taskStore provides a mechanism to store and retrieve
+// task handles given a string identifier. The ID should
+// be unique per task
+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)
+}