func _BlockProcedure(jq, foq *Queue.Queue, lf interface{}, jdq, fdq *diskq.DiskQueue, persist bool) (mystruct.JOBINFO, error) { switch { case lf != nil: return lf.(mystruct.JOBINFO), nil case jq.Len() > 0: if persist { _, err := jdq.Get(false) if err != nil { return mystruct.JOBINFO{ID: -1, INFO: ""}, err } } jobInfo := jq.Pop() return jobInfo.(mystruct.JOBINFO), nil } return mystruct.JOBINFO{ID: -1, INFO: ""}, nil //no job to do,send a heartbeat job }