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)
 | |
| }
 |