2009年7月20日星期一

ISMPEntity之一

ISMPEntity的主要作用:
与ISMP进行绑定或者解绑定(bind,unbind),并维持心跳(heartbeat);管理BDS(BREW Delivery System)与ISMP之间的通信信道,BDS的实时流(用户下载,订购等信息)都是通过ISMPEntity转达给ISMP的。

request 实时流的入口:RequestHandler.java: public void doGet(HttpServletRequest request, HttpServletResponse response),doGet中会调用ISMPEntity.java的方法invokeService,这个方法比较重要,所有手机过来的实时 request,都要经过这个方法,该方法根据它的参数来确认发送request的手持终端的类型,通过这个类型,从类Locator获得相应设备的句 柄,调用相应设备的方法handleRequest来处理终端的request。
其实这里使用的就是多态,设备有多种类型,具体设备都是从一个基类派生的,invokeService根据它的参数确定相应的设备,然后调用设备的方法来处理request,实质上就是使用多态来实现。

前面提到的设备的基类就是DeviceInterface,是位于com.qualcomm.bss.bsg.ismpentity.devices包里的,它是一个接口,里面只有一个方法handleRequest, 抽象类Device实现了这个接口。这个类里面的一些方法有必要关注,但目前还没细看。类TwoXDeviceImpl和 ThreeXDeviceImpl都是从Device派生的,这两个类的名字就很明显了,老谭曾经提到,目前高通有两个平台:较老的2系列和较新的3系 列,这两个类就分别对应的2系列设备和3系列设备。

类HandlerInterface也颇为重要,位于 com.qualcomm.bss.bsg.ismpentity.handler包,它也是个接口,和DeviceInterface本质是相似的,它 对应的是服务的概念,类AppDeletionHandlerImpl,CreateSubscriptionHandlerImpl和 DownloadConfirmationHandlerImpl从HandlerInterface派生,根据三个派生类的名字也可以大概明白它们的作 用:一个处理删除,一个处理包月的创建,一个处理下载确认。注意HandlerInterface接口中也有个很重要的方法叫handleRequest,这个和前面提到的设备的handleRequest不要混淆。在HandlerInterface接口的handleRequest中对收到的request进行了解析,request参考电信文档第八章和第九章,里面有详细request格式介绍。handleRequest按照这个格式进行解析,因为要取出相应的信息来构建PDU

没有评论:

发表评论