一种双端任务处理方法_2

文档序号:9396696阅读:来源:国知局
)如有必要,会生成响应的PeerTask,将PeerTaskReq置为该task指针(为end_peer_task的参数)。注意,仅在多次交互式任务中需要在响应中对该字段进行设置,简单的请求响应任务该字段为空;
[0061]c)将PeerTaskRsp设置为请求通讯数据包中的PeerTaskReq字段(为end_peer_task的参数);
[0062]d)设置 errno (为 end_peer_task 的参数);
[0063]e)发送数据包;
[0064]f)如果发送失败,则使用通讯断开的错误码调用peer_task_done ;
[0065](4).本端收到PeerTaskResponse,使用数据包中的对应字段调用peer_task_done ο
[0066]结束任务流程(peer_task_done):
[0067](I).将 PeerTask 从 PeerTask 链表中移除;
[0068](2).如果错误码为对端断开的错误码,将PeerTask的对端断开标志置为true ;
[0069](3).调用回调函数进行处理。
[0070]通讯断开处理:
[0071](I).遍历 PeerTask 链表;
[0072](2).对每一个链表节点调用peer_task_done,并且参数errno为通讯断开错误码。
[0073]回调函数通用流程(示例):
[0074](I).检查PeerTask的对端断开标志,如为true则进行断开异常处理;
[0075](2).检查errno,如发生错误则进入对应的异常处理;
[0076](3).保存PeerTaskRsp指针,为下一次的响应做准备;
[0077](4).处理结束事件,如通知外部10已完成,或者释放资源等等。
[0078]简单请求响应任务流程示例:
[0079](I).创建PeerTask并发送请求(可以是任何类型的请求);
[0080](2).对端收到请求并处理,然后发送PeerTaskResponse ;
[0081](3).本端收到 PeerTaskResponse,并调用 peer_task_done。
[0082]交互式请求任务流程示例:
[0083](I).创建PeerTask并发送请求;
[0084](2).对端收到请求并处理,然后发送PeerTaskResponse,附带PeerTaskReq字段,即该响应也同时是一个请求;
[0085](3).本端收到 PeerTaskResponse,并调用 peer_task_done ;
[0086](4).在 peer_task_done 中完成处理,并向对端发送 PeerTaskResponse ;
[0087](5).对端收到 PeerTaskResponse,并调用 peer_task_done ;
[0088](6).如果需要,可以不断重复上述流程。
[0089]本实施例的双端任务处理方法提出一种通用的双控通讯请求任务(在这里称之为PeerTask)处理方案,能够更加简便的添加新的简单请求任务(仅需要收到一个应答),支持不带额外应答数据的多次交互式通讯任务,并提供统一的通讯断开处理方式。
[0090]本领域技术人员还可对应本发明的方法设计相应的系统,该系统可执行前述的方法实施例中的流程,不在此进行详述。
【主权项】
1.一种双端任务处理方法,其特征在于,所述方法包括: 第一端根据预设的双端任务PeerTask数据结构,生成双端任务PeerTask,并将所述PeerTask链接到预设的链表中; 第一端根据预设的通用通讯数据包结构,生成请求数据包,并将所述请求数据包发送到第二端; 第二端在接收到所述请求数据包之后,对所述请求数据包进行处理,并根据预设的通用通讯数据包结构,生成响应数据包,并将响应数据包发送到第一端; 第一端在接收到所述响应数据包之后,结束PeerTask。2.根据权利要求1所述的方法,其特征在于,所述预设的双端任务PeerTask数据结构,包括: 链表节点,用于标记PeerTask链接到预设的链表的位置; 私有数据指针,用于指向PeerTask的私有数据;所述私有数据指针在PeerTask初始化时赋值;回调函数指针,用于在PeerTask结束时调用回调函数进行处理,所述回调函数的参数为所述本端PeerTask指针、对端PeerTask指针以及错误码,所述回调函数指针在PeerTask初始化时赋值;所述响应的PeerTask指针以及错误码根据第二端发送的响应数据包确定;第二端断开标志,用于标记通讯状态,所述第二端断开标志的值为false或者true,false表示通讯未断开,true表示通讯断开。3.根据权利要求2所述的方法,其特征还在于,所述预设的通用通讯数据包结构,包括: 数据包类型字段,用于表示数据包的类型,所述类型包括请求以及响应; PeerTaskReq字段,用于表不第一端的PeerTask指针; PeerTaskRsp字段,用于表示第二端的PeerTask响应指针; errno字段,用于表示第二端响应是否成功,成功则为0,否则为错误码; 变长data字段,用于存储PeerTask私有数据,所述变长data字段的长度和内容根据预设的请求类型确定。4.根据权利要求3所述的方法,其特征在于,所述第一端根据预设的双端任务PeerTask数据结构,生成双端任务PeerTask,并将所述PeerTask链接到预设的链表中,包括: 第一端将第二端断开标志的值初始化为false,初始化私有数据指针及回调函数指针,并将PeerTask链接到预设的链表。5.根据权利要求4所述的方法,其特征在于,所述第一端根据预设的通用通讯数据包结构,生成请求数据包,并将所述请求数据包发送到第二端,包括: 第一端将请求数据包的PeerTaskReq字段设置为PeerTask指针,并将请求数据包发送到第二端。6.根据权利要求5所述的方法,其特征在于,所述第二端在接收到所述请求数据包之后,对所述请求数据包进行处理,并根据预设的通用通讯数据包结构,生成响应数据包,并将响应数据包发送到第一端,包括: 第二端在接收到所述请求数据包之后,对所述请求数据包进行处理; 第二端对所述请求数据包进行处理之后,根据预设的通用通讯数据包结构,生成响应数据包,所述响应数据包中数据包类型字段设置为响应类型PeerTaskResponse,所述响应数据包中PeerTaskReq字段的值根据请求数据包中数据包类型字段的内容确定,所述响应数据包中PeerTaskRsp字段的值为所述请求数据包中PeerTaskReq字段的值,所述响应数据包中errno字段的值为所述第二端在处理所述请求数据包之后返回的错误码,若无错误,则errno字段的值为0,否则,errno字段的值为预定义的错误码; 第二端发送所述响应数据包到第一端; 相应地,所述第一端在接收到所述响应数据包之后,使用所述响应数据包的PeerTaskRsp、PeerTaskReq 以及 errno 字段,结束 PeerTask。7.根据权利要求6所述的方法,其特征在于,所述响应数据包中PeerTaskReq字段的值根据请求数据包中数据包类型字段的内容确定,包括: 第二端在确定请求数据包中数据包类型字段的内容为交互式任务之后,将响应数据包中PeerTaskReq字段的值设置为所述第二端在处理请求数据包过程中生成的PeerTask指针; 第二端在确定请求数据包中数据包类型字段的内容为简单请求响应任务之后,将响应数据包中PeerTaskReq字段的值设置为空。8.根据权利要求6所述的方法,其特征还在于,所述第二端发送所述响应数据包的步骤之后,所述方法还包括: 若在处理请求数据包的过程中生成了 PeerTask,则第二端在确定发送响应数据包失败之后,使用PeerTaskReq字段、空指针以及errno字段,结束PeerTask。9.根据权利要求3所述的方法,其特征还在于,所述方法进一步包括通用的通讯断开处理步骤,包括: 第一端遍历预设的链表,对每一个链表节点,找到对应的PeerTask,并结束PeerTask。10.根据权利要求1-9任一项所述的方法,其特征在于,所述结束PeerTask,包括: 将PeerTask的链表节点从预设的链表中移除; 在确定错误码为通讯断开的错误码之后,将PeerTask的第二端断开标志设置为true ; 根据回调函数指针调用回调函数进行处理。
【专利摘要】本发明公开一种双端任务处理方法,所述方法包括:第一端根据预设的双端任务PeerTask数据结构,生成双端任务PeerTask,并将PeerTask链接到预设的链表中;第一端根据预设的通用通讯数据包结构,生成请求数据包,并将请求数据包发送到第二端;第二端在接收到请求数据包之后,对请求数据包进行处理,并根据预设的通用通讯数据包结构,生成响应数据包,并将响应数据包发送到第一端;第一端在接收到响应数据包之后,结束PeerTask。本发明的双端任务处理方法提出一种通用的双控通讯请求任务处理方案,能够更加简便的添加新的简单请求任务,支持不带额外应答数据的多次交互式通讯任务,并提供统一的通讯断开处理方式。
【IPC分类】G06F9/44
【公开号】CN105117230
【申请号】CN201510548482
【发明人】李浩然
【申请人】北京神州云科数据技术有限公司
【公开日】2015年12月2日
【申请日】2015年8月31日
当前第2页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1