[发明专利]一种可中断的远程过程调用方法及装置有效
申请号: | 201810750589.5 | 申请日: | 2018-07-10 |
公开(公告)号: | CN110704203B | 公开(公告)日: | 2022-08-16 |
发明(设计)人: | 杨亮;张文明;陈少杰 | 申请(专利权)人: | 武汉斗鱼网络科技有限公司 |
主分类号: | G06F9/54 | 分类号: | G06F9/54 |
代理公司: | 北京众达德权知识产权代理有限公司 11570 | 代理人: | 刘杰 |
地址: | 430000 湖北省武汉市东湖开*** | 国省代码: | 湖北;42 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 中断 远程 过程 调用 方法 装置 | ||
1.一种可中断的远程过程调用方法,其特征在于,所述方法包括:
判断远程过程调用是否为同步调用;
若所述远程过程调用为同步调用,判断所述远程过程调用是否被设置为可中断;
若所述远程过程调用被设置为可中断,在将远程过程调用消息发送到被调用端后,判断等待时间是否小于预置的超时时间;
若所述等待时间不小于所述预置的超时时间,则结束所述远程过程调用;
若所述等待时间小于预置的超时时间,则根据中断函数的返回值判断是否结束所述远程过程调用;
若所述中断函数的返回值为true,则结束所述远程过程调用;
若所述中断函数的返回值不为true,则判断是否接收到被调用端的返回结果;
若已接收到所述被调用端的返回结果,则结束所述远程过程调用;
若未接收到所述被调用端的返回结果,则继续执行所述判断所述等待时间是否小于所述预置的超时时间。
2.根据权利要求1所述的方法,其特征在于,所述判断远程过程调用是否为同步调用,包括:
根据RPC_ATTR_ASYNC_CALL属性的值判断所述远程过程调用是否为同步调用,所述RPC_ATTR_ASYNC_CALL属性用于设置调用的方式;
若所述RPC_ATTR_ASYNC_CALL属性的值为0,确定所述远程过程调用为同步调用;
若所述RPC_ATTR_ASYNC_CALL属性的值为1,确定所述远程过程调用为异步调用。
3.根据权利要求1所述的方法,其特征在于,所述判断所述远程过程调用是否被设置为可中断,包括:
通过设置RPC_ATTR_CALLBACK_FUNCTION属性注册类型为RPC_POLL_TASK的中断回调函数,所述RPC_ATTR_CALLBACK_FUNCTION属性用于设置函数中的回调函数;
判断所述RPC_ATTR_CALLBACK_FUNCTION属性的值是否为0;
若所述RPC_ATTR_CALLBACK_FUNCTION属性的值不为0,则确定所述远程过程调用被设置为可中断;
若所述RPC_ATTR_CALLBACK_FUNCTION属性的值为0,则确定所述远程过程调用被设置为非中断。
4.根据权利要求1所述的方法,其特征在于,所述判断所述远程过程调用是否被设置为可中断之后,还包括:
将IRpcArgument类型的远程过程调用参数序列化为所述远程过程调用消息;
创建远程过程调用消息组合结构体,所述远程过程调用消息组合结构体包括rpcMessage字段、互斥锁成员、条件成员和结果成员,所述互斥锁成员用于控制函数不返回,所述条件成员用于设置函数执行的条件,所述结果成员用于设置向调用端返回的结果;
将所述远程过程调用消息保存到所述rpcMessage字段中。
5.根据权利要求4所述的方法,其特征在于,若所述中断函数的返回值为true,则结束所述远程过程调用包括:
若所述中断函数的返回值为true,设置所述远程过程调用消息组合结构体的结果成员为ERROR_INTERRUPTED,表示所述远程过程调用被中断;
将所述结果成员作为返回值返回所述调用端,从而结束所述远程过程调用。
6.根据权利要求4所述的方法,其特征在于,若所述等待时间不小于所述预置的超时时间,则结束所述远程过程调用包括:
若所述等待时间不小于所述预置的超时时间,设置所述所述远程过程调用消息组合结构体的结果成员为ERROR_TIMEOUT,表示所述远程过程调用超时;
将所述结果成员作为返回值返回调用端,从而结束所述远程过程调用。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于武汉斗鱼网络科技有限公司,未经武汉斗鱼网络科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810750589.5/1.html,转载请声明来源钻瓜专利网。