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