一种双端任务处理方法技术

技术编号:12437041 阅读:85 留言:0更新日期:2015-12-04 00:52
本发明专利技术公开一种双端任务处理方法,所述方法包括:第一端根据预设的双端任务PeerTask数据结构,生成双端任务PeerTask,并将PeerTask链接到预设的链表中;第一端根据预设的通用通讯数据包结构,生成请求数据包,并将请求数据包发送到第二端;第二端在接收到请求数据包之后,对请求数据包进行处理,并根据预设的通用通讯数据包结构,生成响应数据包,并将响应数据包发送到第一端;第一端在接收到响应数据包之后,结束PeerTask。本发明专利技术的双端任务处理方法提出一种通用的双控通讯请求任务处理方案,能够更加简便的添加新的简单请求任务,支持不带额外应答数据的多次交互式通讯任务,并提供统一的通讯断开处理方式。

【技术实现步骤摘要】

本专利技术涉及通信
,具体涉及一种双端任务处理方法
技术介绍
在处理双端任务时,需要处理各种类型的通讯请求,例如【同步cache数据请求】,【同步flush结果请求】等等。很多请求在处理完成之后都需要对请求方进行响应,例如【同步cache数据请求】,在cache同步完成之后才能向IO发起者报告IO已完成。这样的话,在设置通讯的数据结构时,就必须设置多种类型,比如如果设置了类型【同步cache数据请求】,就必须设置对应的【同步cache数据应答】,以便在收到对应类型的数据包时进行处理。现有的双端任务处理方法存在的问题是:对于需要响应的请求,必须特别为其设置对应的应答,即使该应答仅需要简单应答请求成功或者失败。并且没有提供一种统一的方式,对发起请求之后发生的通讯断开事件进行处理。
技术实现思路
本专利技术所要解决的技术问题是现有的双端任务处理方法对于需要响应的请求,必须特别为其设置对应的应答,没有提供一种统一的方式,对发起请求之后发生的通讯断开事件进行处理。为此目的,本专利技术提供一种双端任务处理方法,所述方法包括:第一端根据预设的双端任务PeerTask数据结构,生成双端任务PeerTask,并将所述PeerTask链接到预设的链表中;第一端根据预设的通用通讯数据包结构,生成请求数据包,并将所述请求数据包发送到第二端;第二端在接收到所述请求数据包之后,对所述请求数据包进行处理,并根据预设的通用通讯数据包结构,生成响应数据包,并将响应数据包发送到第一端;第一端在接收到所述响应数据包之后,结束PeerTask。可选的,所述预设的双端任务PeerTask数据结构,包括:链表节点,用于标记PeerTask链接到预设的链表的位置;私有数据指针,用于指向PeerTask的私有数据;所述私有数据指针在PeerTask初始化时赋值;回调函数指针,用于在PeerTask结束时调用回调函数进行处理,所述回调函数的参数为所述本端PeerTask指针、对端PeerTask指针以及错误码,所述回调函数指针在PeerTask初始化时赋值;所述响应的PeerTask指针以及错误码根据第二端发送的响应数据包确定;第二端断开标志,用于标记通讯状态,所述第二端断开标志的值为false或者true,false表示通讯未断开,true表示通讯断开。可选的,所述预设的通用通讯数据包结构,包括:数据包类型字段,用于表示数据包的类型,所述类型包括请求以及响应;PeerTaskReq字段,用于表示第一端的PeerTask指针;PeerTaskRsp字段,用于表示第二端的PeerTask响应指针;errno字段,用于表示第二端响应是否成功,成功则为0,否则为错误码;变长data字段,用于存储PeerTask私有数据,所述变长data字段的长度和内容根据预设的请求类型确定。可选的,所述第一端根据预设的双端任务PeerTask数据结构,生成双端任务PeerTask,并将所述PeerTask链接到预设的链表中,包括:第一端将第二端断开标志的值初始化为false,初始化私有数据指针及回调函数指针,并将PeerTask链接到预设的链表。可选的,所述第一端根据预设的通用通讯数据包结构,生成请求数据包,并将所述请求数据包发送到第二端,包括:第一端将请求数据包的PeerTaskReq字段设置为PeerTask指针,并将请求数据包发送到第二端。可选的,所述第二端在接收到所述请求数据包之后,对所述请求数据包进行处理,并根据预设的通用通讯数据包结构,生成响应数据包,并将响应数据包发送到第一端,包括:第二端在接收到所述请求数据包之后,对所述请求数据包进行处理;第二端对所述请求数据包进行处理之后,根据预设的通用通讯数据包结构,生成响应数据包,所述响应数据包中数据包类型字段设置为响应类型PeerTaskResponse,所述响应数据包中PeerTaskReq字段的值根据请求数据包中数据包类型字段的内容确定,所述响应数据包中PeerTaskRsp字段的值为所述请求数据包中PeerTaskReq字段的值,所述响应数据包中errno字段的值为所述第二端在处理所述请求数据包之后返回的错误码,若无错误,则errno字段的值为0,否则,errno字段的值为预定义的错误码;第二端发送所述响应数据包到第一端;相应地,所述第一端在接收到所述响应数据包之后,使用所述响应数据包的PeerTaskRsp、PeerTaskReq以及errno字段,结束PeerTask。可选的,所述响应数据包中PeerTaskReq字段的值根据请求数据包中数据包类型字段的内容确定,包括:第二端在确定请求数据包中数据包类型字段的内容为交互式任务之后,将响应数据包中PeerTaskReq字段的值设置为所述第二端在处理请求数据包过程中生成的PeerTask指针;第二端在确定请求数据包中数据包类型字段的内容为简单请求响应任务之后,将响应数据包中PeerTaskReq字段的值设置为空。可选的,所述第二端发送所述响应数据包的步骤之后,所述方法还包括:若在处理请求数据包的过程中生成了PeerTask,则第二端在确定发送响应数据包失败之后,使用PeerTaskReq字段、空指针以及errno字段,结束PeerTask。可选的,所述方法进一步包括通用的通讯断开处理步骤,包括:第一端遍历预设的链表,对每一个链表节点,找到对应的PeerTask,并结束PeerTask。可选的,所述结束PeerTask,包括:将PeerTask的链表节点从预设的链表中移除;在确定错误码为通讯断开的错误码之后,将PeerTask的第二端断开标志设置为true;根据回调函数指针调用回调函数进行处理。相比于现有技术,本专利技术的双端任务处理方法对于不同的请求设置相同结构的响应数据包;对于不同的请求使用所述相同结构的响应数据包进行处理,不需要单独为每个请求设置对应的响应数据包类型;设计通用的通讯断开处理方案,不需要对各种请求额外的设计类似的解决方案。本专利技术的双端任务处理方法提出一种通用的双控通讯请求任务(在这里称之为PeerTask)处理方案,能够更加简便的添加新的简单请求任务(仅需要收到一个应答),支持不带额外应答数据的多次交互式通讯任务,并提供统一的通讯断开处理方式。<本文档来自技高网...

【技术保护点】
一种双端任务处理方法,其特征在于,所述方法包括:第一端根据预设的双端任务PeerTask数据结构,生成双端任务PeerTask,并将所述PeerTask链接到预设的链表中;第一端根据预设的通用通讯数据包结构,生成请求数据包,并将所述请求数据包发送到第二端;第二端在接收到所述请求数据包之后,对所述请求数据包进行处理,并根据预设的通用通讯数据包结构,生成响应数据包,并将响应数据包发送到第一端;第一端在接收到所述响应数据包之后,结束PeerTask。

【技术特征摘要】
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.根...

【专利技术属性】
技术研发人员:李浩然
申请(专利权)人:北京神州云科数据技术有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1