SP应该增加握手机制

     这里提到的握手机制,简单点讲,就是增加某些确认信息。

      为什么这样说呢?因为SP中有些地方比较特殊,我们就拿一个简单的例子,读卡器IDC等待进卡的命令。我们知道这个命令在WOSA规范中叫做WFS_CMD_IDC_READ_RAW_DATA,其功能是一直打开读卡器的闸门,等待有个客户将卡插入,如果硬件检测到有卡插入了,则会发送一个WFS_EXEE_IDC_MEDIAINSERTED事件给ATMC上层,接着将卡的信息返回给ATMC上层应用。这里面有个比较特殊的地方是该命令没有超时机制,就是该函数理论上如果没有卡插入,就永远不会返回。

      我们考虑一下下面的情况:如果有个客户插卡进入读卡器,读卡器检测到有卡进来,则发送一个WFS_EXEE_IDC_MEDIAINSERTED事件。我们都知道,Windows是基于消息机制的操作系统,发送一个事件是有可能失败的,那么如果WFS_EXEE_IDC_MEDIAINSERTED事件没有到达ATMC上层会怎样呢?更进一步,如果硬件检测到卡插入,但是硬件处理本身没有返回,一样没有事件到达ATMC上层。

      如果熟悉ATM的人就会知道,这种现象很多人叫做“夹卡”,即卡停在读卡器里面,但是ATMC上层不知道卡已经插入,还在那播放欢迎画面,插入的卡退不出来,别人也无法再插卡进去,导致ATM不能运转了。

      其实我们可以有几种方式来处理这种情况,可以是ATMC上层调用WFS_CMD_IDC_READ_RAW_DATA命令后,自己设置个定时器不断检查是否有卡在读卡器里面,如果有则命令返回,然后做吞卡等处理;也可以增加握手机制,硬件一发现有卡,就给ATMC上层一个确认信息,该信息不通过事件返回,上层就可以重新设定一个超时处理机制。

      其他也有些方式,总的来说要在SP中防止这种情况的发生,尽量写出比较稳定的SP来,这样看来不熟悉ATM的业务知识,很多情况是不会凭空想到的,做东西的时候多考虑下还是很有必要的。

刘永胜        2005年8月于中国广州洛溪岛

Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=466314

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值