예제 #1
0
        public int ArrangeInstantTask(string tid, uint dtuId, JObject[] cmdobjs, ATTaskResultConsumer consumer)
        {
            ATTask task = new ATTask(tid, dtuId, cmdobjs, TaskType.INSTANT, consumer);

            ATTaskPersistent.Init();
            ATTaskPersistent.SaveTaskImmedate(task);
            task.Consumer += OnAtInstantTaskFinished;
            DacTaskContext context = null;

            if (_workers.ContainsKey(dtuId))
            {
                if (!IsWorkerAvaliable(_workers[dtuId]))
                {
                    _workers[dtuId].Stop();
                }
                context = _workers[dtuId].GetContext();
            }
            else
            {
                context = CreateContext(dtuId);
            }
            var atworker = new AtCommandWorker(task, context);

            atworker.StartWork();
            return(task.ID);
        }
예제 #2
0
 public ATTask(string tid, uint dtuId, JObject[] cmdobjs, TaskType type, ATTaskResultConsumer tc)
 {
     this.TID        = tid;
     this.DtuID      = dtuId;
     this.Type       = type;
     this.AtCommands = this.GetAtCommands(cmdobjs);
     this.Requested  = DateTime.Now;
     this.Requester  = "Admin";
     this.Saved      = false;
     this.Status     = DACTaskStatus.RUNNING;
     Consumer        = tc;
 }