59 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			59 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Go
		
	
	
	
package themis
 | 
						|
 | 
						|
import "github.com/pingcap/go-hbase"
 | 
						|
 | 
						|
// LockRole is the role of lock
 | 
						|
type LockRole int
 | 
						|
 | 
						|
func (l LockRole) String() string {
 | 
						|
	if l == RolePrimary {
 | 
						|
		return "primary"
 | 
						|
	}
 | 
						|
	return "secondary"
 | 
						|
}
 | 
						|
 | 
						|
const (
 | 
						|
	// RolePrimary means this row is primary
 | 
						|
	RolePrimary LockRole = iota
 | 
						|
	// RoleSecondary means this row is secondary
 | 
						|
	RoleSecondary
 | 
						|
)
 | 
						|
 | 
						|
type Lock interface {
 | 
						|
	// SetCoordinate sets lock's coordinate
 | 
						|
	SetCoordinate(c *hbase.ColumnCoordinate)
 | 
						|
	// Coordinate returns the lock's coordinate
 | 
						|
	Coordinate() *hbase.ColumnCoordinate
 | 
						|
	// Timestamp returns startTs of the transction which owned this lock
 | 
						|
	Timestamp() uint64
 | 
						|
	// SetExpired sets the lock's expired status.
 | 
						|
	SetExpired(b bool)
 | 
						|
	// IsExpired returns if lock is expired.
 | 
						|
	IsExpired() bool
 | 
						|
	// Type returns the lock's type, Put or Delete
 | 
						|
	Type() hbase.Type
 | 
						|
	// Role returns LockRole, primary or secondary
 | 
						|
	Role() LockRole
 | 
						|
	// not used now
 | 
						|
	Context() interface{}
 | 
						|
	// valid only  Role == Primary
 | 
						|
	Secondaries() []Lock
 | 
						|
	// Primary returns the primary lock of this lock
 | 
						|
	Primary() Lock
 | 
						|
	// Encode encodes the lock to byte slice
 | 
						|
	Encode() []byte
 | 
						|
}
 | 
						|
 | 
						|
type LockManager interface {
 | 
						|
	// CleanLock if clean lock success, first return value is transction's commit
 | 
						|
	// timestamp, otherwise, the second return value is transction's primary
 | 
						|
	// lock.
 | 
						|
	CleanLock(c *hbase.ColumnCoordinate, prewriteTs uint64) (uint64, Lock, error)
 | 
						|
	// EraseLockAndData removes lock and data.
 | 
						|
	EraseLockAndData(c *hbase.ColumnCoordinate, prewriteTs uint64) error
 | 
						|
	// GetCommitTimestamp returns a committed transction's commit timestamp.
 | 
						|
	GetCommitTimestamp(c *hbase.ColumnCoordinate, prewriteTs uint64) (uint64, error)
 | 
						|
	// [startTs, endTs]
 | 
						|
	IsLockExists(c *hbase.ColumnCoordinate, startTs, endTs uint64) (bool, error)
 | 
						|
}
 |