|
@@ -7,7 +7,9 @@ import (
|
|
mu "mfw/util"
|
|
mu "mfw/util"
|
|
"net"
|
|
"net"
|
|
qu "qfw/util"
|
|
qu "qfw/util"
|
|
|
|
+ "strconv"
|
|
"sync"
|
|
"sync"
|
|
|
|
+ "time"
|
|
)
|
|
)
|
|
var (
|
|
var (
|
|
Config map[string]interface{} //配置文件
|
|
Config map[string]interface{} //配置文件
|
|
@@ -36,6 +38,7 @@ func main() {
|
|
udpclient = mu.UdpClient{Local: updport, BufSize: 1024}
|
|
udpclient = mu.UdpClient{Local: updport, BufSize: 1024}
|
|
udpclient.Listen(processUdpMsg)
|
|
udpclient.Listen(processUdpMsg)
|
|
log.Println("Udp服务监听", updport)
|
|
log.Println("Udp服务监听", updport)
|
|
|
|
+ time.Sleep(99999 * time.Hour)
|
|
}
|
|
}
|
|
|
|
|
|
//udp接收
|
|
//udp接收
|
|
@@ -66,6 +69,7 @@ func processUdpMsg(act byte, data []byte, ra *net.UDPAddr) {
|
|
|
|
|
|
//拆分段落方法
|
|
//拆分段落方法
|
|
splitArr:=splitIdMethod(sid,eid)
|
|
splitArr:=splitIdMethod(sid,eid)
|
|
|
|
+ log.Println(splitArr)
|
|
if len(splitArr)!=len(extractNode){//直接发送整段
|
|
if len(splitArr)!=len(extractNode){//直接发送整段
|
|
log.Println("段落划分异常...请检查程序...")
|
|
log.Println("段落划分异常...请检查程序...")
|
|
}
|
|
}
|
|
@@ -110,11 +114,46 @@ func validExtractFinish() bool {
|
|
}
|
|
}
|
|
//拆分ID段方法
|
|
//拆分ID段方法
|
|
func splitIdMethod(sid string,eid string)([]map[string]interface{}) {
|
|
func splitIdMethod(sid string,eid string)([]map[string]interface{}) {
|
|
-
|
|
|
|
-
|
|
|
|
- return []map[string]interface{}{}
|
|
|
|
|
|
+ dataArr := make([]map[string]interface{},0)
|
|
|
|
+ if len(extractNode)==1 {
|
|
|
|
+ dataArr = append(dataArr, map[string]interface{}{
|
|
|
|
+ "sid":sid,
|
|
|
|
+ "eid":eid,
|
|
|
|
+ })
|
|
|
|
+ }else {
|
|
|
|
+ interval := hex2Dec(string(eid[:8]))-hex2Dec(string(sid[:8]))
|
|
|
|
+ num := interval/int64(len(extractNode))
|
|
|
|
+ tmp_time := hex2Dec(string(sid[:8]))+num
|
|
|
|
+ for i:=0;i<len(extractNode);i++ {
|
|
|
|
+ if i==0 {
|
|
|
|
+ tmp_eid := fmt.Sprintf("%x",tmp_time)
|
|
|
|
+ dataArr = append(dataArr, map[string]interface{}{
|
|
|
|
+ "sid":sid,
|
|
|
|
+ "eid":tmp_eid+"0000000000000000",
|
|
|
|
+ })
|
|
|
|
+ }else if i==len(extractNode)-1 {
|
|
|
|
+ tmp_sid := fmt.Sprintf("%x",tmp_time)
|
|
|
|
+ dataArr = append(dataArr, map[string]interface{}{
|
|
|
|
+ "sid":tmp_sid+"0000000000000000",
|
|
|
|
+ "eid":eid,
|
|
|
|
+ })
|
|
|
|
+ }else {
|
|
|
|
+ tmp_sid := fmt.Sprintf("%x",tmp_time)
|
|
|
|
+ tmp_time = tmp_time+num
|
|
|
|
+ tmp_eid := fmt.Sprintf("%x",tmp_time)
|
|
|
|
+ dataArr = append(dataArr, map[string]interface{}{
|
|
|
|
+ "sid":tmp_sid+"0000000000000000",
|
|
|
|
+ "eid":tmp_eid+"0000000000000000",
|
|
|
|
+ })
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return dataArr
|
|
|
|
+}
|
|
|
|
+func hex2Dec(val string)int64{
|
|
|
|
+ n,_ := strconv.ParseInt(val,16,32)
|
|
|
|
+ return n
|
|
}
|
|
}
|
|
-
|
|
|
|
//发送抽取
|
|
//发送抽取
|
|
func sendExtractNode(splitArr []map[string]interface{}) {
|
|
func sendExtractNode(splitArr []map[string]interface{}) {
|
|
for index, node := range extractNode {
|
|
for index, node := range extractNode {
|