package Engine
|
|
|
|
import (
|
|
conf "LAPP_PRN_Service/config"
|
|
"LAPP_PRN_Service/db"
|
|
"LAPP_PRN_Service/glog"
|
|
"time"
|
|
)
|
|
|
|
// 启动打印任务提取服务
|
|
// conf Config.EnvConfig 配置文件
|
|
// c chan Model.PrintTask 任务通道->Scheduler
|
|
func StartFetcher(conf *conf.EnvConfig, c chan db.PrintTask) {
|
|
var (
|
|
prnlist []string
|
|
err error
|
|
)
|
|
printers := db.Printer{}
|
|
prnlist, err = printers.GetPrinterIdList(conf)
|
|
if err != nil {
|
|
glog.InfoExtln("Fetcher","Fetcher: failed to get printer id list due to ", err)
|
|
return
|
|
}
|
|
|
|
// 启动Goroutine不间断读取打印任务
|
|
go func(){
|
|
var(
|
|
taskList []db.PrintTask
|
|
stalist []string
|
|
err error
|
|
)
|
|
// 首先加载pending 未打印的任务
|
|
stalist =[]string{"P"}
|
|
task := new(db.PrintTask)
|
|
taskList, err = task.GetPrintTaskList(stalist, prnlist,conf)
|
|
if err != nil {
|
|
glog.InfoExtln("Fetcher","Failed to read the task due to : ", err)
|
|
}
|
|
for _, t := range taskList {
|
|
c <- t
|
|
}
|
|
|
|
// 循环加载新建的打印任务
|
|
stalist =[]string{"N", "R"}
|
|
for {
|
|
taskList, err := task.GetPrintTaskList(stalist, prnlist,conf)
|
|
if err != nil {
|
|
glog.InfoExtln("Fetcher","Failed to read the task due to : ", err)
|
|
}
|
|
for _, t := range taskList {
|
|
c <- t
|
|
task.ChangePrintTaskStatus(t, "P") // 将任务状态置为处理中
|
|
}
|
|
time.Sleep(time.Duration(conf.ReadTaskInterval) * time.Second)
|
|
}
|
|
}()
|
|
}
|