|
- package publock
-
- import (
- "gitlink.org.cn/cloudream/jcs-pub/client/internal/publock/reqbuilder"
- "gitlink.org.cn/cloudream/jcs-pub/client/internal/publock/types"
- )
-
- type Mutex struct {
- pub *PubLock
- locked LockedRequest
- }
-
- func (m *Mutex) Unlock() {
- m.pub.release(m.locked.ReqID)
- }
-
- type MutexBuilder struct {
- reqbuilder.LockRequestBuilder[*MutexBuilder]
- pub *PubLock
- }
-
- func (b *MutexBuilder) Lock(opt ...AcquireOptionFn) (*Mutex, error) {
- lkd, err := b.pub.acquire(types.LockRequest{
- Locks: b.Locks,
- }, opt...)
- if err != nil {
- return nil, err
- }
-
- return &Mutex{
- pub: b.pub,
- locked: lkd,
- }, nil
- }
|