MCPcopy Create free account
hub / github.com/compozy/agh / lockSource

Method lockSource

internal/resources/kernel.go:1280–1304  ·  view source on GitHub ↗
(source ResourceSource)

Source from the content-addressed store, hash-verified

1278}
1279
1280func (k *Kernel) lockSource(source ResourceSource) func() {
1281 key := string(source.Kind) + "\x00" + source.ID
1282
1283 k.sourceLocksMu.Lock()
1284 lock, ok := k.sourceLocks[key]
1285 if !ok {
1286 lock = &sourceLock{}
1287 k.sourceLocks[key] = lock
1288 }
1289 lock.refs++
1290 k.sourceLocksMu.Unlock()
1291
1292 lock.mu.Lock()
1293 return func() {
1294 lock.mu.Unlock()
1295
1296 k.sourceLocksMu.Lock()
1297 defer k.sourceLocksMu.Unlock()
1298
1299 lock.refs--
1300 if lock.refs == 0 {
1301 delete(k.sourceLocks, key)
1302 }
1303 }
1304}
1305
1306func resourceKey(kind ResourceKind, id string) string {
1307 return string(kind) + "\x00" + id

Callers 4

ActivateSourceSessionMethod · 0.95
ResetSourceMethod · 0.95

Calls 1

deleteFunction · 0.50

Tested by 1