带保护的远程调用代码框架,宏实现

本文介绍了一个用于CORBA应用的代码框架,该框架通过宏REMOTE_PROTECT_CALL提供对远程调用失败的保护。当远程对象引用失效导致调用失败时,该宏允许指定错误处理代码,并在多线程环境中使用同步锁确保唯一错误处理。示例展示了如何在接口Remote的fun方法调用中应用此框架。
摘要由CSDN通过智能技术生成
在CORBA应用程序中,程序员需要调用远程对象引用的方法.然而远程对象引用可能由于某些原因而失效使得调用过程失败.一般情况下这种失败只要捕获异常再做决定即可.然后某些关键调用过程要求必须成功,对于这种需求将其抽象出一个代码框架,实现了对于远程调用失败的一种保护方法.
带保护的远程调用宏
REMOTE_PROTECT_CALL(METHOD, METHOD_NAME, FAILED_ACTION, LOCK) 
参数意义:
METHOD:调用函数,就是实际的方法调用代码
METHOD_NAME:函数名字,字符串,框架使用它打印出错误信息
FAILED_ACTION:调用失败时的处理代码,程序员自定义的调用失败时的处理办法
LOCK:多线程环境下的同步锁,有些情况下,可能多个线程在调用同一个方法,如果多个线程都调用失败则都会执行错误处理代码.使用锁确保只有一个线程在做错误处理
使用例子,假设有这样的接口
interface Remote{ 
short fun(in short arg);
};
如果调用失败,则调用unBindObj和bindObj重新获取对象引用
代码如下:
Remote_var obj = ...//获取对象引用
MTLMonitor lock;
REMOTE_PROTECT_CALL(obj->fun(3),
                                                "obj->fun(3)",
                                                unBindObj();bindObj();,
                                               lock);
框架代码如下:
// 定义带有保护的远程调用框架
#define  MAX_TRY_REMOTE_CALL_FAILED_CT 5
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值