-
Notifications
You must be signed in to change notification settings - Fork 55
/
brokermeta.go
57 lines (48 loc) · 1.76 KB
/
brokermeta.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
package kafkazk
// BrokerMetaMap is a map of broker IDs to BrokerMeta
// metadata fetched from ZooKeeper. Currently, just
// the rack field is retrieved.
type BrokerMetaMap map[int]*BrokerMeta
// BrokerMeta holds metadata that describes a broker,
// used in satisfying constraints.
type BrokerMeta struct {
StorageFree float64 // In bytes.
MetricsIncomplete bool
// Metadata from ZooKeeper.
ListenerSecurityProtocolMap map[string]string `json:"listener_security_protocol_map"`
Endpoints []string `json:"endpoints"`
Rack string `json:"rack"`
JMXPort int `json:"jmx_port"`
Host string `json:"host"`
Timestamp string `json:"timestamp"`
Port int `json:"port"`
Version int `json:"version"`
}
// Copy returns a copy of a BrokerMetaMap.
func (bmm BrokerMetaMap) Copy() BrokerMetaMap {
var c = BrokerMetaMap{}
for id, b := range bmm {
cp := b.Copy()
c[id] = &cp
}
return c
}
// Copy returns a copy of a BrokerMeta.
func (bm BrokerMeta) Copy() BrokerMeta {
cp := BrokerMeta{
StorageFree: bm.StorageFree,
MetricsIncomplete: bm.MetricsIncomplete,
ListenerSecurityProtocolMap: map[string]string{},
Rack: bm.Rack,
JMXPort: bm.JMXPort,
Host: bm.Host,
Timestamp: bm.Timestamp,
Port: bm.Port,
Version: bm.Version,
}
for k, v := range bm.ListenerSecurityProtocolMap {
cp.ListenerSecurityProtocolMap[k] = v
}
cp.Endpoints = append(cp.Endpoints, bm.Endpoints...)
return cp
}