daemon模式写入序修正

This commit is contained in:
algotao
2025-12-13 21:07:12 +08:00
parent 765e75937d
commit 9a892eb533
2 changed files with 58 additions and 33 deletions

View File

@@ -55,6 +55,8 @@ func RunDaemon(args ...string) error {
apiurls.BaseUrl = "https://srta.algo.com.cn"
case "prd":
apiurls.BaseUrl = "https://api.rta.qq.com"
case "dev":
apiurls.BaseUrl = "http://localhost:8080"
default:
err = fmt.Errorf("SRTA_ENV is not demo or prd")
slog.Error("Env", "err", err)
@@ -76,7 +78,11 @@ func RunDaemon(args ...string) error {
mux.HandleFunc("/read", daemon.httpRead)
mux.HandleFunc("/write", daemon.httpWrite)
daemonPort := ":8080"
daemonPort := os.Getenv("SRTA_PORT")
if strings.TrimSpace(daemonPort) == "" {
daemonPort = "8080"
}
daemonPort = ":" + daemonPort
svrHttp := http.Server{
Addr: daemonPort,
Handler: mux,
@@ -275,6 +281,12 @@ func (d *Daemon) parseQuery(q url.Values, lineNum int) (writeItem *saasapi.Write
writeItem = &saasapi.WriteItem{
Userid: userid,
}
// 临时存储按index排序后再写入
u8Map := make(map[uint64]uint8)
u32Map := make(map[uint64]uint32)
flagMap := make(map[uint64]*saasapi.FlagWithExpire)
for key, value := range q {
parts := strings.Split(strings.ToLower(key), ".")
if len(parts) == 2 {
@@ -297,18 +309,10 @@ func (d *Daemon) parseQuery(q url.Values, lineNum int) (writeItem *saasapi.Write
return
}
if writeItem.GetWriteBytes() == nil {
writeItem.WriteBytes = &saasapi.Bytes{}
if _, exists := u8Map[index]; !exists {
u8Map[index] = uint8(nValue)
}
if writeItem.GetWriteBytes().GetIndex_1()&(1<<(index-1)) > 0 {
// 已经被写入过数据,跳过
continue
}
writeItem.GetWriteBytes().Bytes = append(writeItem.GetWriteBytes().Bytes, uint8(nValue))
writeItem.GetWriteBytes().Index_1 |= 1 << (index - 1)
case "u32":
index, err := strconv.ParseUint(parts[1], 10, 8)
if err != nil {
@@ -326,17 +330,10 @@ func (d *Daemon) parseQuery(q url.Values, lineNum int) (writeItem *saasapi.Write
return
}
if writeItem.GetWriteUint32S() == nil {
writeItem.WriteUint32S = &saasapi.Uint32S{}
if _, exists := u32Map[index]; !exists {
u32Map[index] = uint32(nValue)
}
if writeItem.GetWriteUint32S().GetIndex_1()&(1<<(index-1)) > 0 {
// 已经被写入过数据,跳过
continue
}
writeItem.GetWriteUint32S().Uint32S = append(writeItem.GetWriteUint32S().Uint32S, uint32(nValue))
writeItem.GetWriteUint32S().Index_1 |= 1 << (index - 1)
case "flag":
index, err := strconv.ParseUint(parts[1], 10, 8)
if err != nil {
@@ -348,7 +345,11 @@ func (d *Daemon) parseQuery(q url.Values, lineNum int) (writeItem *saasapi.Write
return
}
flag := saasapi.FlagWithExpire{}
if _, exists := flagMap[index]; exists {
continue
}
flag := &saasapi.FlagWithExpire{}
switch strings.ToLower(value[0]) {
case "true":
flag.Flag = true
@@ -378,20 +379,43 @@ func (d *Daemon) parseQuery(q url.Values, lineNum int) (writeItem *saasapi.Write
}
}
if writeItem.GetWriteFlagsWithExpire() == nil {
writeItem.WriteFlagsWithExpire = &saasapi.FlagsWithExpire{}
}
if writeItem.GetWriteFlagsWithExpire().GetIndex_1()&(1<<(index-1)) > 0 {
// 已经被写入过数据,跳过
continue
}
writeItem.GetWriteFlagsWithExpire().FlagsWithExpire = append(writeItem.GetWriteFlagsWithExpire().FlagsWithExpire, &flag)
writeItem.GetWriteFlagsWithExpire().Index_1 |= 1 << (index - 1)
flagMap[index] = flag
}
}
}
// 按index顺序写入u8
if len(u8Map) > 0 {
writeItem.WriteBytes = &saasapi.Bytes{}
for i := uint64(1); i <= uint64(saasapi.MAX_U8); i++ {
if v, exists := u8Map[i]; exists {
writeItem.WriteBytes.Bytes = append(writeItem.WriteBytes.Bytes, v)
writeItem.WriteBytes.Index_1 |= 1 << (i - 1)
}
}
}
// 按index顺序写入u32
if len(u32Map) > 0 {
writeItem.WriteUint32S = &saasapi.Uint32S{}
for i := uint64(1); i <= uint64(saasapi.MAX_U32); i++ {
if v, exists := u32Map[i]; exists {
writeItem.WriteUint32S.Uint32S = append(writeItem.WriteUint32S.Uint32S, v)
writeItem.WriteUint32S.Index_1 |= 1 << (i - 1)
}
}
}
// 按index顺序写入flag
if len(flagMap) > 0 {
writeItem.WriteFlagsWithExpire = &saasapi.FlagsWithExpire{}
for i := uint64(1); i <= uint64(saasapi.MAX_FLAG); i++ {
if v, exists := flagMap[i]; exists {
writeItem.WriteFlagsWithExpire.FlagsWithExpire = append(writeItem.WriteFlagsWithExpire.FlagsWithExpire, v)
writeItem.WriteFlagsWithExpire.Index_1 |= 1 << (i - 1)
}
}
}
return
}