/// <summary> /// 给规约增加任务 /// </summary> /// <param name="task">要添加的任务。</param> internal void AddTask(ConnectionTask task) { if (task == null) { return; } lock (taskList) { if (!taskList.Contains(task)) { task.SetRelatedProtocol(this.relatedProtocol); taskList.Insert(0, task); //((EventWaitHandle)this.relatedProtocol.protocolEvents[(int)ProtocolEvents.TaskArrived]).Set(); string LogMsg = string.Format("协议“{0}”增加了一个“{1}”任务。", "未定义协议名称", task.Name); } } }
/// <summary> /// 协议一收到任务,此函数将被调用。 /// </summary> /// <param name="newTask"></param> protected override void ProcessTask(ConnectionTask task) { task.SetAsBeProccessing(); try { string cmdByte = task.Name; commCase_Send = this.connectionDocker.GetCase(cmdByte) as IConnection; if (commCase_Send == null || !(commCase_Send is RefactorRequestChannel)) { int taskname = Convert.ToInt32(task.Name); switch (taskname)//应答 { case ProtocolConst.APP_BROADCAST_SEARCH_NEW_HOST: commCase_Send = new BroadcastSearchRequest(this._reactor); break; default: string msg = String.Format("协议未实现。 TaskName:{0}; ", task.Name); Console.WriteLine(msg); task.Dead = true; return; } } else { //commCase_Send.Task.Param = task.Param; //commCase_Send.Task.Complete(TaskState.Processing); } if (commCase_Send != null) { task.SetRelatedProtocol(commCase_Send); ((RefactorRequestChannel)commCase_Send).ExecuteTaskSync(task); } } catch (Exception ex) { string msg = String.Format("协议收到任务,此函数被调用。 TaskName:{0}; Message:{1}", task.Name, ex.Message); Console.WriteLine(msg); task.Dead = true; } }