daemon模式写入序修正
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
1
datasample/.gitignore
vendored
Normal file
1
datasample/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
_*
|
||||
Reference in New Issue
Block a user