|
@@ -11,7 +11,6 @@ import (
|
|
|
"path"
|
|
|
qu "qfw/util"
|
|
|
"strings"
|
|
|
- "sync"
|
|
|
"sync/atomic"
|
|
|
"time"
|
|
|
)
|
|
@@ -19,8 +18,7 @@ import (
|
|
|
var udpclient mu.UdpClient //udp对象
|
|
|
var Sysconfig map[string]interface{}
|
|
|
var MgoIP, MgoDB, MgoC, MgoFileFiled, GetDataIp, GetDataPort string
|
|
|
-var sys sync.RWMutex
|
|
|
-var ChanA,ChanB = make(chan bool),make(chan bool,1)
|
|
|
+var ChanA, ChanB = make(chan bool), make(chan bool, 1)
|
|
|
var tmpNUM int32
|
|
|
|
|
|
func init() {
|
|
@@ -46,7 +44,8 @@ func main() {
|
|
|
log.Printf("Udp listening port: %s:%s\n", Sysconfig["udpip"], Sysconfig["udpport"])
|
|
|
ticker := time.NewTicker(time.Second * 30)
|
|
|
var num int
|
|
|
- task: for {
|
|
|
+task:
|
|
|
+ for {
|
|
|
select {
|
|
|
case <-ticker.C:
|
|
|
num++
|
|
@@ -78,40 +77,44 @@ func processUdpMsg(act byte, data []byte, ra *net.UDPAddr) {
|
|
|
ChanA <- true
|
|
|
close(ChanA)
|
|
|
}
|
|
|
- log.Println("data:",string(data))
|
|
|
- sys.Lock()
|
|
|
+ log.Println("data:", string(data), ra.String())
|
|
|
var mapInfo map[string]interface{}
|
|
|
err := json.Unmarshal(data, &mapInfo)
|
|
|
if err != nil {
|
|
|
- log.Println("json err :", err, string(data),ra.String())
|
|
|
- time.Sleep(time.Second * 30)
|
|
|
+ if string(data) == "没有新数据" {
|
|
|
+ time.Sleep(time.Minute * 5)
|
|
|
+ } else {
|
|
|
+ time.Sleep(time.Second * 30)
|
|
|
+ }
|
|
|
go udpclient.WriteUdp([]byte(`{"permission":"get_ocr_task"}`), mu.OP_GET_DOWNLOADERCODE, ra)
|
|
|
- sys.Unlock()
|
|
|
return
|
|
|
}
|
|
|
- if qu.ObjToString(mapInfo["permission"])!="ocr_task"{
|
|
|
- log.Println("数据异常 :", string(data),ra.String())
|
|
|
- time.Sleep(time.Second * 3)
|
|
|
+ if qu.ObjToString(mapInfo["permission"]) != "ocr_task" {
|
|
|
+ log.Println("数据异常 :", string(data), ra.String())
|
|
|
+ time.Sleep(time.Second * 30)
|
|
|
go udpclient.WriteUdp([]byte(`{"permission":"get_ocr_task"}`), mu.OP_GET_DOWNLOADERCODE, ra)
|
|
|
- sys.Unlock()
|
|
|
return
|
|
|
}
|
|
|
ObjectId := qu.ObjToString(mapInfo["id"])
|
|
|
if ObjectId == "" || !bson.IsObjectIdHex(ObjectId) {
|
|
|
- log.Println("获取数据id错误", mapInfo,ra.String())
|
|
|
- time.Sleep(time.Second * 3)
|
|
|
+ log.Println("获取数据id错误", mapInfo, ra.String())
|
|
|
+ time.Sleep(time.Second * 30)
|
|
|
go udpclient.WriteUdp([]byte(`{"permission":"get_ocr_task"}`), mu.OP_GET_DOWNLOADERCODE, ra)
|
|
|
- sys.Unlock()
|
|
|
return
|
|
|
}
|
|
|
- sys.Unlock()
|
|
|
- log.Println("获取数据成功:", mapInfo,ra.String())
|
|
|
+ log.Println("获取数据成功:", mapInfo, ra.String())
|
|
|
data, _ := mongodbutil.Mgo.FindById(MgoC, ObjectId, bson.M{"_id": 1, MgoFileFiled: 1})
|
|
|
if len(*data) == 0 {
|
|
|
+ if qu.ObjToString(mapInfo["is_start"]) == "true"{
|
|
|
+ return
|
|
|
+ }
|
|
|
go udpclient.WriteUdp([]byte(`{"permission":"get_ocr_task"}`), mu.OP_GET_DOWNLOADERCODE, ra)
|
|
|
return
|
|
|
}
|
|
|
if v, ok := (*data)[MgoFileFiled].(map[string]interface{}); !ok {
|
|
|
+ if qu.ObjToString(mapInfo["is_start"]) == "true" {
|
|
|
+ return
|
|
|
+ }
|
|
|
go udpclient.WriteUdp([]byte(`{"permission":"get_ocr_task"}`), mu.OP_GET_DOWNLOADERCODE, ra)
|
|
|
return
|
|
|
} else {
|
|
@@ -130,11 +133,14 @@ func processUdpMsg(act byte, data []byte, ra *net.UDPAddr) {
|
|
|
<-ChanB
|
|
|
continue
|
|
|
}
|
|
|
- save(bson.ObjectIdHex(ObjectId), attk, &v, &fileinfo, &updateNum)
|
|
|
+ save(bson.ObjectIdHex(ObjectId), attk, data, &fileinfo, &updateNum)
|
|
|
<-ChanB
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+ if qu.ObjToString(mapInfo["is_start"]) == "true" {
|
|
|
+ return
|
|
|
+ }
|
|
|
go udpclient.WriteUdp([]byte(`{"permission":"get_ocr_task"}`), mu.OP_GET_DOWNLOADERCODE, ra)
|
|
|
}
|
|
|
case mu.OP_NOOP: //下个节点回应
|