Платформа ЦРНП "Мирокод" для разработки проектов
https://git.mirocod.ru
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
58 lines
1.7 KiB
58 lines
1.7 KiB
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) |
|
}
|
|
|