-
Notifications
You must be signed in to change notification settings - Fork 831
/
Copy pathitem_circuit_breaker.go
54 lines (45 loc) · 1.7 KB
/
item_circuit_breaker.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
/*
* Copyright 2023 CloudWeGo Authors
*
* 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,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package circuitbreak
import (
"github.com/cloudwego/configmanager/iface"
"github.com/cloudwego/configmanager/util"
)
var _ iface.ConfigValueItem = (*CBConfigItem)(nil)
// TypeCircuitBreaker is used as itemKey in ConfigValueImpl
const TypeCircuitBreaker iface.ItemType = "cb_config"
// CBConfigItem is an alias of CBConfig to meet the requirement of iface.ConfigValueItem
type CBConfigItem CBConfig
// CopyDefaultCBConfig returns a copy of default CBConfig, thus avoiding default values changed by business
func CopyDefaultCBConfig() iface.ConfigValueItem {
c := CBConfigItem(GetDefaultCBConfig())
return c.DeepCopy()
}
// NewCBConfig decodes json bytes to a new CBConfigItem
var NewCBConfig = util.JsonInitializer(func() iface.ConfigValueItem {
return &CBConfigItem{}
})
// DeepCopy returns a copy of CBConfigItem
func (c *CBConfigItem) DeepCopy() iface.ConfigValueItem {
cb := ((*CBConfig)(c)).DeepCopy()
return (*CBConfigItem)(cb)
}
// EqualsTo compares two CBConfigItem
func (c *CBConfigItem) EqualsTo(other iface.ConfigValueItem) bool {
x := (*CBConfig)(c)
y := (*CBConfig)(other.(*CBConfigItem))
return x.Equals(y)
}