guard

package
v0.247.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 7, 2024 License: Apache-2.0 Imports: 2 Imported by: 2

Documentation

Index

Constants

View Source
const ErrNoLock constant.Error = "ErrNoLock"

Variables

This section is empty.

Functions

This section is empty.

Types

type Locker

type Locker interface {
	// Lock locks the Locker resource.
	// If the lock is already in use, the calling will be blocked until the locks is available.
	// It returns a context that represent a locked context, and an error that is nil if locking succeeded.
	// The returned context may hold locking related runtime states,
	// It might signal cancellation if the ownership of the lock is lost for some reason.
	Lock(ctx context.Context) (_lockContext context.Context, _ error)
	Unlocker
}

Locker represents a resource that can be locked and unlocked. Implementations must provide a way to acquire the lock, potentially blocking it until it becomes available.

type LockerFactory

type LockerFactory[Key comparable] interface {
	// LockerFor returns a Locker associated with the given key.
	//
	// The returned Locker can be used to acquire and release locks on the key.
	// This allows for concurrent access to shared resources, ensuring thread safety.
	//
	// Note: The name "LockerFor" is chosen instead of "LockFor" to emphasize that
	// this method returns a Locker object, which provides locking functionality,
	// rather than directly acquiring a lock.
	LockerFor(Key) Locker
}

type NonBlockingLocker added in v0.247.0

type NonBlockingLocker interface {
	// TryLock attempts to acquire the lock without blocking.
	// Returns true if the lock was acquired successfully, false otherwise.
	//
	// This method does not wait for the lock to become available and instead returns immediately.
	TryLock(ctx context.Context) (_lockContext context.Context, isAcquired bool, _ error)
	Unlocker
}

NonBlockingLocker represents a resource that can be attempted to lock without blocking. If the lock is not immediately available, the attempt will fail instead of blocking.

type NonBlockingLockerFactory added in v0.247.0

type NonBlockingLockerFactory[Key comparable] interface {
	NonBlockingLockerFor(Key) NonBlockingLocker
}

type Unlocker added in v0.247.0

type Unlocker interface {
	// Unlock unlocks the Locker resource.
	// It is an error if Locker is not locked on entry to Unlock.
	//
	// It takes the context that Lock returned.
	Unlock(lockContext context.Context) error
}

Unlocker provides a way to release a previously acquired lock.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL