一种oc数据的更新方法

文档序号:6607676阅读:222来源:国知局
专利名称:一种oc数据的更新方法
一种OC数据的更新方法
技术领域
本发明涉及数字电视领域,尤其涉及一种0C(0bject Carousel,对象轮播)数据 的更新方法。
背景技术
OC(Object Carousel,对象轮播)是数字电视系统中基于DSM-CC(Digital Storage Media-Command & Control)协议的,需要对DSM-CC U-U(User to User)对象(目 录、文件、流、流事件)进行周期性广播的数据广播业务。OC主要支持DVB-J(Digital Video Broadcasting-Java) > DVB-H(Digital Video Broadcasting-HTML)应用。基本应用有阳 光政务,天气预报,出行旅游,股票,游戏等。前端广播的数据可能定期有更新,而终端要能快速检测到更新,并能及时的下载 到更新后的数据供用户使用。OC应用是由一个个的文件组成的,这些文件按照它们之间的关联关系组成目录树 的结构。根目录(Root DIR)中可以包含多个文件(filel,file2, ···)和子目录(DIR1, DIR2,···)’每一个子目录也可以包含多个文件和下一级子目录(如子目录DIRl中可以包 含filell,filel2,...,DIR11,DIR12,...),一级一级如此循环下去。这样最终可以组成 一个树形结构,即目录树。在OC中使用消息来封装数据与控制信息。数据由DDB^ownloadDataBlock,下载 数据块消息)携带,控制信息则由DSI (DownloadServerInitiate,下载服务器起始消息)、 DlKDownloadlnfoIndication,下载信息指示消息)等携带。在OC中,所有数据可以分成 一个或多个组,一个组中可包含一个或多个模块,每个模块又由多个DDB组成。每个组由一 个DII消息来指示,DII消息描述了一个组中包含的所有模块的传输参数,如模块版本、模 块大小、块大小、时序和广播通道等。每个DII消息可以用其TransactionId字段来标识。TransactionId不仅包含 DII的标识部分,还包含DII的版本部分。如果新接收到的DII的标识部分与原来的DII 一样,但是版本号是不同的,则认为两个DII是同一个DII,只是版本号发生了变化;如果新 接收到的DII的标识部分与当前存储的DII都不同,则认为新增加了 DII。同时DII里面 还有其描述模块的标识和版本。当前DII所在的组中的任何数据更新都会使得当前DII的 TransactionId字段的版本部分发生变化,并且DII中描述的对应模块的版本也会产生变 化。如果模块包含的文件或者目录有增加或者删除,则文件或者目录所在的目录树结构一 定发生了变化。目前,并没有对OC数据进行的更新方法的相关专利或技术文档。
发明内容本发明提供一种OC数据的更新方法,使终端能够快速的检测到前端服务器的更 新信息,同时只需要更新所需要更新的数据,从而提高了终端的更新数据的效率。
3
本发明采用以下技术方案解决上述技术问题一种OC数据的更新方法,其特征包括以下步骤a.启动终端的定时器,定时接收DII ;b.将所述接收到的所有DII与所述终端存储的原有DII进行比较;c.若增加了新的DII,则存储所述新的DII,并把所述新的DII描述的所有模块下 载到终端;d.若缺少了 DII,则在所述终端删除所述缺少的DII,并删除所述缺少的DII描述 的模块及所述模块对应的文件和目录;f.若DII的版本发生了变化,则对所述终端所述版本变化的DII的版本号进行更 新并对所述版本变化的DII描述的模块进行处理。如权利要求1所述的OC数据的更新方法,其特征在于所述f步骤还包括fl.将所述版本变化的DII中的模块与所述原有的DII描述的模块进行比较;f2.若增加了新的模块,则在轮播中添加所述新的模块,并向前端服务器发送请 求,将所述新的模块对应的DDB下载到所述终端;f3.若缺少了模块,则在轮播中删除所述缺少的模块,并递归删除目录树中属于所 述缺少的模块的所有文件和目录;f4.若模块的版本发生变化,则对与所述版本变化的模块对应的在所述存储器中 的模块的版本号进行更新,将所述版本号更新的模板的状态设置为版本变化;若所述版本 号更新的模板包含目录对象,则下载所述版本号更新的模板对应的DDB;再下载终端最近 显示的页面所用到的文件所在的模块。本发明采用以下技术方案进一步解决上述技术问题这种OC数据的更新方法,其特征在于所述步骤f4还包括在步骤下载所述版 本号更新的模板对应的DDB后,判断所述版本号更新的模块的标识是否为变化;若是则查 看所述版本号更新的模块是否包含目录对象如果所述版本号更新的模块存在所述目录对 象,则递归删除所述版本号更新的模块中的目录树中有但所述版本变化的模块的目录树中 没有的文件和目录;将所述版本号更新的模块的状态设置为没有变化。这种OC数据的更新方法,其特征在于递归删除目录树中属于模块的文件或目录 包括以下步骤gl.判断当前目录下是否存在文件或者目录,若不存在,如果所述当前目录属于所 述模块则删除所述当前目录,如果所述当前目录不属于所述模块则不删除所述当前目录, 若存在则执行步骤g2 ;g2.获取所述当前目录下属于所述模块的孩子对象,若所述孩子对象为文件,则执 行如下操作若所述文件正在被终端使用,将所述文件状态设置为等待删除,断开所述文件 在所述目录树中的连接,将所述文件加入待删除链表,若所述文件没有被所述终端使用,则 直接删除所述文件;若所述孩子对象是目录则重复从gl开始执行;g3.重复gl和g2步骤直至所述目录树中属于所述模块的文件和目录被删除为止。本发明的有益效果是使终端能够更快的检测到前端服务器的更新信息,并对只 需要更新的数据进行下载,提高了更新数据的效率,使终端页面更新所需的时间更短。

图1为OC数据更新的检测的流程图;图2为DII版本变化情况的处理流程图;图3为解析完某个模块后的处理流程图;图4为递归删除目录树中的文件和目录流程图。
具体实施方式以下结合具体实施例进一步说明。前端服务器所存储的OC应用放在根目录Root DIR下面,其中根目录Root DIR中 包含有两个文件filel,file2,和子目录DIRl ;其中子目录DIRl中包含两个文件filell, filel2,和一个子目录DIR11。这样便形成了一个目录树。前端服务器对上述应用进行打包 时,将filel打包成模块Module_filel,其版本号为1 ;将file2打包成模块Module_file2, 其版本号为1 ;将DIRl目录下的两个文件filel和file2打包成模块Module_DIRl,其版本 号为1 ;将目录树信息打包成模块M0dUle_R00t,其版本号为1。DIIl用以描述模块Module_ filel ;DII2 用以描述模块 Module_file2、模块 Module_DIRl、模块 Module_Root,其 DII 版 本号为1。现在由于应用要进行更新,服务器在根目录Root DIR下面所存储的文件发生了变 化根目录下删除了 filel,增加了 file3 ;对file2进行了一些内容的修改;同时删除了目 录DIRl,增加了另一个子目录DIR2。服务器重新对应用的所有文件进行打包,将fi le2打 包成模块Module_file2,其版本号为2 ;将file3打包成模块Module_f ile3 ;将DIR2打包 成模块Module_DIR2 ;将目录树信息打包成模块Module_R00t,其版本号为2。DII3用以描 述模块 Module_file3 ;DII2 用以描述模块 Module_file2、模块 Module_DIR2、模块 Module_ Root,其DII版本号为2。终端已经存储了该应用的部分或全部文件,包括原来的模块信息、DII信息等。现 在服务器更新了应用的数据,并开始向终端发送更新后的数据。终端在一开始进入OC时就 已经启动定时器,接收DII。如图1所示,终端接收到DII2、DII3后,与原来存储在终端存储器里的DII1、DII2 进行比较,通过DII中的transactionld字段标识判断出所收到的DII中,少了 DII1,并 将存储器里DIIl描述的模块ModUle_filel删除;增加了 DII3,并将加载其对应的模块 Module_file3 ;对于新收到的DII2,判断出ransactionld字段中版本部分发生了变化。接下来的步骤如图2所示,具体如下(下面几段文字很多标点的都是半角的,请 改成全角的。)步骤Si,把原来终端存储器里的DII2的版本号改为2,然后将原来终端存储器里 的DII2描述的模块与刚接收到的DII2描述的模块一一比较(即是遍历);步骤S2-S4 步骤S2,发现新收到的DII2描述的模块中,多了模块Module_DIR2 ; 步骤S3,在轮播中添加此模块;步骤S4,发送请求,加载此模块对应的DDB ;步骤S5-S7 步骤S5,发现少了模块Module_DIRl,步骤S6,在轮播中删除此模块, 步骤S7,递归删除此模块下的所有文件和目录;步骤S8-S12 步骤S8,发现模块Module_file2和模块Module_Root的版本都发生了变化;步骤S9,对终端存储器内两个模块Module_f ile2和Module_R00t的版本号分别 更新为2,同时将这两个模块的版本状态改为变化;步骤S10,判断终端存储的模块Module_ Root和Module_f ile2中有无目录对象;步骤S11,因为Module_Root有目录对象,则加载模 块Module_Root对应的DDB,由于模块Module_file2没有目录对象,则不加载对应DDB ;步 骤S12,由于终端最近显示的页面使用过文件file2,所以加载file2所在的模块Module_ file20接下来的步骤如图3所示,具体如下步骤S13,判断模块的更新标识是否为变化,(在此只对ModUle_file2的接收进行 分析,终端对其它模块的处理方法与此相同)在接收模块ModUle_file2时,由于终端已将 此模块的状态设置为改变;步骤S14,终端将进一步判断此模块有无目录信息,由于模块ModUle_file2没有 目录信息,终端执行步骤S16,重新把此模块的状态设置为未改变。假如模块ModUle_f ile2含有目录信息,则执行步骤S15,终端要将终端目录树中 有但模块ModUle_file2里没有的文件和目录递归删除后,再执行步骤S16,将模块Module_ file2的状态设置为未改变。这样是为了防止更新后的应用,目录树出现变化的情况。在对属于模块ModUle_DIRl的目录DIRl下的文件进行递归删除的时候,按照以下 步骤进行gl.判断当前目录DIRl下是否存在文件或者目录,由于存在则执行步骤g2 ;g2.获取所述当前目录DIRl下的孩子对象,由于孩子对象filell和filel2是 文件且filell正在被终端使用,而filel2则没有被终端使用,则对其进行执行如下操作 将文件filell的状态设置为等待删除,断开其在此目录树中的连接,并将其加入待删除链 表,在关闭所述当前文件时对其进行删除,对文件filel2则直接删除文件;由于孩子对象 DIRll是目录,则重复从gl开始执行,此时当前目录变为DIRll ;g3.重复gl和g2步骤直至目录DIRl被删除为止。假设目录DIRll下只有一个文件filelll且没有被终端所使用,则在将filelll 删除后又返回gl步骤,此时目录DIRll下已经没有文件或者目录,DIRll被删除。此时由 于目录DIRl还没有被删,则要继续执行gl,由于目录DIR下已经没有文件或目录,将目录 DIRl删掉。至此,目录DIRl被完整的删除。如图4所示,上述删除模块Module_DIRl的目录DIRl下的文件的具体步骤如下步骤S17,判断当前目录DIRl下是否存在文件或者目录;步骤S18,由于当前目录DIRl存在文件和目录,则获取其第一个孩子对象 filell (此处第一个孩子对象也可以是filel2或者DIR11);步骤S19,判断对象filell是文件还是目录;步骤S20,由于filell,判断filell是否包含在Module_DIRl下;步骤S21,由于filell包含在Module_DIRl下,判断filell是否正在被终端使用;步骤S23,由于filell是正在被终端使用,将文件filell的状态设置为等待删除, 断开其在此目录树中的连接,并将其加入待删除链表,在关闭所述当前文件时对其进行删 除;
步骤S24,判断filell有无兄弟对象;步骤S27,由于filell有兄弟对象filel2和DIR11,获取其兄弟对象filel2(也 可以是DIR11);此时,步骤回到S19,由于filel2是文件且没有正在被终端使用,则执行步骤S22, 将filel2删除;步骤回到S24 ;由于filel2有兄弟对象DIR11,步骤回到S19 ;由于DIRll是目录,执行步骤S26 ;假设目录DIRll下只有一个文件filelll且没有被终端所使用,则步骤回到S17, 则顺序执行步骤 S18、S19、S20、S21、S22、S24 ;步骤S25,由于filelll没有其他兄弟对象,则判断目录DIRll是否包含在所要删 除的模块Module_DIRl中;步骤S28,由于目录DIRll包含在所要删除的模块Module_DIRl中,将目录DIRll 删除;此时回到步骤S24,由于目录DIRll没有其他兄弟对象(filell和filel2此时已 经被删),执行步骤S25,判断目录DIRl是否包含在所要删除的模块Module_DIRl中;步骤S28,由于目录DIRl包含在所要删除的模块Module_DIRl中,删除目录DIRl。 至此包含在模块Module_DIRl中的文件和目录已经完全被删除了。假设目录DIRl下面没有任何文件或者目录,则执行由步骤S17执行到步骤S29,由 于目录DIRl包含在所要删除的模块Module_DIRl中,执行步骤S30,将目录DIRl删除。以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定 本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在 不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的 保护范围。
权利要求
一种OC数据的更新方法,其特征包括以下步骤a.启动终端的定时器,定时接收DII;b.将所述接收到的所有DII与所述终端存储的原有DII进行比较;c.若增加了新的DII,则存储所述新的DII,并把所述新的DII描述的所有模块下载到终端;d.若缺少了DII,则在终端删除所述缺少的DII,并递归删除目录树中所有属于所述缺少的DII描述的模块对应的文件和目录;f.若DII的版本发生了变化,则对所述终端所述版本变化的DII的版本号进行更新并对所述版本变化的DII描述的模块进行处理。
2.如权利要求1所述的OC数据的更新方法,其特征在于所述f步骤还包括 fl.将所述版本变化的DII中的模块与所述原有的DII描述的模块进行比较;f2.若增加了新的模块,则在轮播中添加所述新的模块,并向前端服务器发送请求,将 所述新的模块对应的DDB下载到所述存储器中;f3.若缺少了模块,则在轮播中删除所述缺少的模块,并递归删除目录树中属于所述缺 少的模块的所有文件和目录;f4.若模块的版本发生变化,则对与所述版本变化的模块对应的所述终端存储的模块 的版本号进行更新,将所述版本号更新的模块的状态设置为版本变化;若所述版本号更新 的模块包含目录对象,则下载所述版本号更新的模块对应的DDB;再下载所述终端最近显 示的页面用到的文件所在的模块。
3.如权利要求2所述的OC数据的更新方法,其特征在于所述步骤f4还包括在步 骤下载所述版本号更新的模块对应的DDB后,判断所述版本号更新的模块的标识是否为变 化;若是则查看所述版本号更新的模块是否包含目录对象如果所述版本号更新的模块存 在所述目录对象,则递归删除所述版本号更新的模块中的目录树中有但所述版本变化的模 块的目录树中没有的文件和目录;将所述版本号更新的模块的状态设置为没有变化。
4.如权利要求2或3的任何一项所述的OC数据的更新方法,其特征在于递归删除目 录树中属于模块的文件或目录包括以下步骤gl.判断当前目录下是否存在文件或者目录,若不存在,如果所述当前目录属于所述模 块则删除所述当前目录并执行步骤g3,如果所述当前目录不属于所述模块则执行步骤g3, 如果存在则执行步骤g2 ;g2.获取所述当前目录下属于所述模块的孩子对象,若所述孩子对象为文件,则执行如 下操作若所述文件正在被终端使用,将所述文件状态设置为等待删除,断开所述文件在所 述目录树中的连接,将所述文件加入待删除链表并执行步骤g3,若所述文件没有被所述终 端使用,则直接删除所述文件;若所述孩子对象是目录则重复从步骤gl开始执行,其中,所 述被加入待删除链表的文件在被所述终端关闭后被所述终端删除;g3.重复步骤gl至g3直至所述目录树中属于所述模块的文件和目录被删除为止。
全文摘要
本发明公开了一种OC数据的更新方法,包括以下步骤a.启动终端的定时器,定时接收DII;b.将所述接收到的所有DII与终端存储的原有DII进行比较;c.若增加了新的DII,则存储所述新的DII;d.若缺少了DII,则在终端删除所述缺少的DII,并删除所述缺少的DII描述的模块及所述模块对应的文件和目录;f.若DII的版本发生了变化,则对终端所述版本变化的DII的版本号进行更新并对所述版本变化的DII描述的模块进行处理。本发明的有益效果是使终端能够更快的检测到前端服务器的更新信息,并对只需要更新的数据进行下载,提高了更新数据的效率,使终端页面更新所需的时间更短。
文档编号G06Q40/00GK101951362SQ20101025301
公开日2011年1月19日 申请日期2010年8月13日 优先权日2010年8月13日
发明者杨汇源 申请人:深圳市同洲电子股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1