@@ -45,23 +45,29 @@ type RegionInfo struct {
4545
4646// NewRegionInfo create a new api RegionInfo.
4747func NewRegionInfo (r * core.RegionInfo ) * RegionInfo {
48+ return InitRegion (r , & RegionInfo {})
49+ }
50+
51+ // InitRegion init a new api RegionInfo from the core.RegionInfo.
52+ func InitRegion (r * core.RegionInfo , s * RegionInfo ) * RegionInfo {
4853 if r == nil {
4954 return nil
5055 }
51- return & RegionInfo {
52- ID : r .GetID (),
53- StartKey : string (core .HexRegionKey (r .GetStartKey ())),
54- EndKey : string (core .HexRegionKey (r .GetEndKey ())),
55- RegionEpoch : r .GetRegionEpoch (),
56- Peers : r .GetPeers (),
57- Leader : r .GetLeader (),
58- DownPeers : r .GetDownPeers (),
59- PendingPeers : r .GetPendingPeers (),
60- WrittenBytes : r .GetBytesWritten (),
61- ReadBytes : r .GetBytesRead (),
62- ApproximateSize : r .GetApproximateSize (),
63- ApproximateKeys : r .GetApproximateKeys (),
64- }
56+
57+ s .ID = r .GetID ()
58+ s .StartKey = core .HexRegionKeyStr (r .GetStartKey ())
59+ s .EndKey = core .HexRegionKeyStr (r .GetEndKey ())
60+ s .RegionEpoch = r .GetRegionEpoch ()
61+ s .Peers = r .GetPeers ()
62+ s .Leader = r .GetLeader ()
63+ s .DownPeers = r .GetDownPeers ()
64+ s .PendingPeers = r .GetPendingPeers ()
65+ s .WrittenBytes = r .GetBytesWritten ()
66+ s .ReadBytes = r .GetBytesRead ()
67+ s .ApproximateSize = r .GetApproximateSize ()
68+ s .ApproximateKeys = r .GetApproximateKeys ()
69+
70+ return s
6571}
6672
6773// RegionsInfo contains some regions with the detailed region info.
@@ -126,13 +132,18 @@ func newRegionsHandler(svr *server.Server, rd *render.Render) *regionsHandler {
126132}
127133
128134func convertToAPIRegions (regions []* core.RegionInfo ) * RegionsInfo {
129- regionInfos := make ([]* RegionInfo , len (regions ))
135+ regionInfos := make ([]RegionInfo , len (regions ))
136+ regionInfosRefs := make ([]* RegionInfo , len (regions ))
137+
138+ for i := 0 ; i < len (regions ); i ++ {
139+ regionInfosRefs [i ] = & regionInfos [i ]
140+ }
130141 for i , r := range regions {
131- regionInfos [i ] = NewRegionInfo ( r )
142+ regionInfosRefs [i ] = InitRegion ( r , regionInfosRefs [ i ] )
132143 }
133144 return & RegionsInfo {
134145 Count : len (regions ),
135- Regions : regionInfos ,
146+ Regions : regionInfosRefs ,
136147 }
137148}
138149
0 commit comments