-
Notifications
You must be signed in to change notification settings - Fork 41
/
kind.go
115 lines (101 loc) · 2.51 KB
/
kind.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
// Copyright 2020 PingCAP, Inc.
// Modifications copyright (C) 2021 MatrixOrigin.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// See the License for the specific language governing permissions and
// limitations under the License.
package core
import (
"github.com/matrixorigin/matrixcube/components/prophet/pb/metapb"
)
// PriorityLevel lower level means higher priority
type PriorityLevel int
// Built-in priority level
const (
LowPriority PriorityLevel = iota
NormalPriority
HighPriority
)
// ScheduleKind distinguishes resources and schedule policy.
type ScheduleKind struct {
ResourceKind metapb.ResourceKind
Policy SchedulePolicy
}
// NewScheduleKind creates a schedule kind with resource kind and schedule policy.
func NewScheduleKind(kind metapb.ResourceKind, Policy SchedulePolicy) ScheduleKind {
return ScheduleKind{
ResourceKind: kind,
Policy: Policy,
}
}
// SchedulePolicy distinguishes different kinds of schedule policies.
type SchedulePolicy int
const (
// ByCount indicates that balance by count
ByCount SchedulePolicy = iota
// BySize indicates that balance by size
BySize
)
func (k SchedulePolicy) String() string {
switch k {
case ByCount:
return "count"
case BySize:
return "size"
default:
return "unknown"
}
}
// StringToSchedulePolicy creates a schedule policy with string.
func StringToSchedulePolicy(input string) SchedulePolicy {
switch input {
case BySize.String():
return BySize
case ByCount.String():
return ByCount
default:
panic("invalid schedule policy: " + input)
}
}
// KeyType distinguishes different kinds of key types
type KeyType int
const (
// Table indicates that the key is table key
Table KeyType = iota
// Raw indicates that the key is raw key.
Raw
// Txn indicates that the key is txn key.
Txn
)
func (k KeyType) String() string {
switch k {
case Table:
return "table"
case Raw:
return "raw"
case Txn:
return "txn"
default:
return "unknown"
}
}
// StringToKeyType creates a key type with string.
func StringToKeyType(input string) KeyType {
switch input {
case Table.String():
return Table
case Raw.String():
return Raw
case Txn.String():
return Txn
default:
panic("invalid key type: " + input)
}
}