in internal/model.go [193:299]
func (info ConsumerRunningInfo) Encode() ([]byte, error) {
data, err := json.Marshal(info.Properties)
if err != nil {
return nil, err
}
jsonData := fmt.Sprintf("{\"%s\":%s", "properties", string(data))
data, err = json.Marshal(info.StatusTable)
if err != nil {
return nil, err
}
jsonData = fmt.Sprintf("%s,\"%s\":%s", jsonData, "statusTable", string(data))
subs := make([]*SubscriptionData, len(info.SubscriptionData))
idx := 0
for k := range info.SubscriptionData {
subs[idx] = k
idx++
}
// make sure test case table
sort.Slice(subs, func(i, j int) bool {
sub1 := subs[i]
sub2 := subs[j]
if sub1.ClassFilterMode != sub2.ClassFilterMode {
return sub1.ClassFilterMode == false
}
com := strings.Compare(sub1.Topic, sub1.Topic)
if com != 0 {
return com > 0
}
com = strings.Compare(sub1.SubString, sub1.SubString)
if com != 0 {
return com > 0
}
if sub1.SubVersion != sub2.SubVersion {
return sub1.SubVersion > sub2.SubVersion
}
com = strings.Compare(sub1.ExpType, sub1.ExpType)
if com != 0 {
return com > 0
}
v1, _ := sub1.Tags.MarshalJSON()
v2, _ := sub2.Tags.MarshalJSON()
com = bytes.Compare(v1, v2)
if com != 0 {
return com > 0
}
v1, _ = sub1.Codes.MarshalJSON()
v2, _ = sub2.Codes.MarshalJSON()
com = bytes.Compare(v1, v2)
if com != 0 {
return com > 0
}
return true
})
data, err = json.Marshal(subs)
if err != nil {
return nil, err
}
jsonData = fmt.Sprintf("%s,\"%s\":%s", jsonData, "subscriptionSet", string(data))
tableJson := ""
keys := make([]primitive.MessageQueue, 0)
for k := range info.MQTable {
keys = append(keys, k)
}
sort.Slice(keys, func(i, j int) bool {
q1 := keys[i]
q2 := keys[j]
com := strings.Compare(q1.Topic, q2.Topic)
if com != 0 {
return com < 0
}
com = strings.Compare(q1.BrokerName, q2.BrokerName)
if com != 0 {
return com < 0
}
return q1.QueueId < q2.QueueId
})
for idx := range keys {
dataK, err := json.Marshal(keys[idx])
if err != nil {
return nil, err
}
dataV, err := json.Marshal(info.MQTable[keys[idx]])
tableJson = fmt.Sprintf("%s,%s:%s", tableJson, string(dataK), string(dataV))
}
tableJson = strings.TrimLeft(tableJson, ",")
jsonData = fmt.Sprintf("%s,\"%s\":%s, \"%s\":\"%s\" }",
jsonData, "mqTable", fmt.Sprintf("{%s}", tableJson),
"jstack", info.JStack)
return []byte(jsonData), nil
}