package Engine import ( conf "leit.com/leit_seat_aps/config" "leit.com/leit_seat_aps/db" "leit.com/leit_seat_aps/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.Printertab{} 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) } }() }