著录项信息
专利名称 | 用于处理编码数据流的系统和方法 |
申请号 | CN201380023665.8 | 申请日期 | 2013-05-17 |
法律状态 | 暂无 | 申报国家 | 中国 |
公开/公告日 | 2015-01-07 | 公开/公告号 | CN104272774A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | H04W4/12 | IPC分类号 | H;0;4;W;4;/;1;2;;;H;0;4;W;8;0;/;0;0查看分类表>
|
申请人 | 英特尔公司 | 申请人地址 | 美国加利福尼亚州
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 苹果公司 | 当前权利人 | 苹果公司 |
发明人 | D.肯兹奧;M.霍特曼恩 |
代理机构 | 中国专利代理(香港)有限公司 | 代理人 | 杨美灵;姜甜 |
摘要
公开用于经过无线网络所传递的编码数据流的有效处理的方法和系统。系统可包括接收器组件、迭代器组件和返回组件。接收器组件接收包括多个对象的编码消息。消息可按照协议来编码。迭代器组件在没有对编码消息进行解码的情况下遍历编码消息中的多个对象以查找多个对象的所选对象。所选对象由客户端应用来选择。返回组件向客户端应用返回与所选对象关联的数据。
1.一种用于经过无线网络所传递的编码数据流的有效处理的方法,所述方法包括:
从所述无线网络接收包括多个对象的编码消息,所述编码消息按照协议来编码;
在没有对所述编码消息进行解码的情况下遍历所述编码消息中的所述多个对象,以查找所述多个对象的所选对象,其中所述所选对象由客户端应用来选择;以及响应查找到所述所选对象,向所述客户端应用返回与所述所选对象关联的数据。
2.如权利要求1所述的方法,其中,所述编码消息按照无线会话协议WSP来编码,以及遍历所述编码消息包括基于所述WSP的要求来遍历所述编码消息。
3.如权利要求1所述的方法,其中,所返回数据包括指示所述编码消息中的所述所选对象的位置的指针。
4.如权利要求3所述的方法,其中,所述所选对象对应于定制对象。
5.如权利要求1所述的方法,其中,所返回数据包括指示库中的预定存储器位置的指针,所述预定存储器位置包括与所述所选对象关联的数据。
6.如权利要求5所述的方法,其中,所述所选对象对应于如所述协议所定义的公知对象,以及其中所述预定存储器位置包括与所述公知对象关联的数据。
7.如权利要求6所述的方法,其中,所述编码消息中的所述所选对象包括所述公知对象的紧凑二进制编码,以及其中所述库中的所述预定存储器位置包括所述公知对象的未编码版本。
8.如权利要求1所述的方法,其中,遍历所述编码消息中的所述多个对象包括基于所述协议的结构要求来查找所述多个对象的随后对象。
9.如权利要求1所述的方法,其中,在没有对所述编码消息进行解码的情况下进行遍历包括遍历所述编码消息而不创建所述编码消息的未编码版本。
10.如权利要求1所述的方法,其中,遍历所述编码消息包括零复制处理。
11.如权利要求10所述的方法,其中,不要求用于复制所述消息的一部分的存储器分配。
12.如权利要求1所述的方法,还包括确定所述多个对象的对象是否为所选对象。
13.如权利要求12所述的方法,其中,确定所述多个对象的对象是否为所选对象包括将所述对象与所述客户端程序的所选对象的列表进行比较。
14.如权利要求13所述的方法,其中,所述所选对象包括报头,以及其中所述客户端程序的所选对象的列表包括一个或多个所选报头。
15.如权利要求14所述的方法,其中,所述所选对象还包括报头参数,所述方法还包括响应将所述报头与所述一个或多个所选报头的至少一个进行匹配而返回与所述报头参数对应的指针,所述报头参数对应于所述报头。
16.一种用于经过无线网络所传递的编码数据流的有效处理的系统,所述系统包括:
接收器组件,从所述无线网络接收包括多个对象的编码消息,所述编码消息按照协议来编码;
迭代器组件,在没有对所述编码消息进行解码的情况下遍历所述编码消息中的所述多个对象,以查找所述多个对象的所选对象,其中所述所选对象由客户端应用来选择;以及返回组件,响应查找到所述所选对象,向所述客户端应用返回与所述所选对象关联的数据。
17.如权利要求16所述的系统,其中,所述编码消息按照无线会话协议WSP来编码,以及遍历所述编码消息包括基于所述WSP的要求来遍历所述编码消息。
18.如权利要求16所述的系统,其中,所返回数据包括指示所述编码消息中的所述所选对象的位置的指针。
19.如权利要求16所述的系统,其中,所返回数据包括指示库中的预定存储器位置的指针,所述预定存储器位置包括与所述所选对象关联的数据。
20.如权利要求19所述的系统,其中,所述所选对象对应于如所述协议所定义的公知对象,以及其中所述预定存储器位置包括与所述公知对象关联的数据。
21.如权利要求20所述的系统,其中,所述编码消息中的所述所选对象包括所述公知对象的紧凑二进制编码,以及其中所述库中的所述预定存储器位置包括所述公知对象的未编码版本。
22.一种存储有程序代码的计算机可读存储介质,所述程序代码在由机器运行时使所述机器执行用于经过无线网络所传递的编码数据流的有效处理的方法,所述方法包括:
从所述无线网络接收包括多个对象的编码消息,所述编码消息按照协议来编码;
在没有对所述编码消息进行解码的情况下遍历所述编码消息中的所述多个对象以查找所述多个对象的所选对象,其中所述所选对象由客户端应用来选择;以及响应查找到所述所选对象,向所述客户端应用返回与所述所选对象关联的数据。
23.如权利要求22所述的计算机可读存储介质,其中,所返回数据包括指示所述编码消息中的所述所选对象的位置的指针。
24.如权利要求22所述的计算机可读存储介质,其中,所返回数据包括指示库中的预定存储器位置的指针,所述预定存储器位置包括与所述所选对象关联的数据。
25.如权利要求24所述的计算机可读存储介质,其中,所述所选对象对应于如所述协议所定义的公知对象,以及其中所述预定存储器位置包括与所述公知对象关联的数据。
26.一种用于经过无线网络所传递的编码数据流的有效处理的设备,所述设备包括:
用于从所述无线网络接收包括多个对象的编码消息的装置,所述编码消息按照协议来编码;
用于在没有对所述编码消息进行解码的情况下遍历所述编码消息中的所述多个对象,以查找所述多个对象的所选对象的装置,其中所述所选对象由客户端应用来选择;以及用于响应查找到所述所选对象,向所述客户端应用返回与所述所选对象关联的数据的装置。
27.如权利要求26所述的设备,其中,所述编码消息按照无线会话协议WSP来编码,以及用于遍历所述编码消息的装置包括用于基于所述WSP的要求来遍历所述编码消息的装置。
28.如权利要求26所述的设备,其中,所返回数据包括指示所述编码消息中的所述所选对象的位置的指针。
29.如权利要求28所述的设备,其中,所述所选对象对应于定制对象。
30.如权利要求26所述的设备,其中,所返回数据包括指示库中的预定存储器位置的指针,所述预定存储器位置包括与所述所选对象关联的数据。
31.如权利要求30所述的设备,其中,所述所选对象对应于如所述协议所定义的公知对象,以及其中所述预定存储器位置包括与所述公知对象关联的数据。
32.如权利要求31所述的设备,其中,所述编码消息中的所述所选对象包括所述公知对象的紧凑二进制编码,以及其中所述库中的所述预定存储器位置包括所述公知对象的未编码版本。
33.如权利要求26所述的设备,其中,用于遍历所述编码消息中的所述多个对象的装置包括用于基于所述协议的结构要求来查找所述多个对象的随后对象的装置。
34.如权利要求26所述的设备,其中,用于在没有对所述编码消息进行解码的情况下进行遍历的装置包括用于遍历所述编码消息而不创建所述编码消息的未编码版本的装置。
35.如权利要求26所述的设备,其中,用于遍历所述编码消息的装置包括用于零复制处理的装置。
36.如权利要求35所述的设备,其中,不要求用于复制所述消息的一部分的存储器分配。
37.如权利要求26所述的设备,还包括用于确定所述多个对象的对象是否为所选对象的装置。
38.如权利要求37所述的设备,其中,用于确定所述多个对象的对象是否为所选对象的装置包括用于将所述对象与所述客户端程序的所选对象的列表进行比较的装置。
39.如权利要求38所述的设备,其中,所述所选对象包括报头,以及其中所述客户端程序的所选对象的列表包括一个或多个所选报头。
40.如权利要求39所述的设备,其中,所述所选对象还包括报头参数,所述设备还包括用于响应将所述报头与所述一个或多个所选报头的至少一个进行匹配而返回与所述报头参数对应的指针的装置,所述报头参数对应于所述报头。
用于处理编码数据流的系统和方法\n技术领域\n[0001] 本公开涉及用于通过网络的装置之间的通信的系统和方法。具体来说,本公开涉及用于通过通信网络所发送的编码消息的有效处理的系统和方法。\n背景技术\n[0002] 装置一般使用编码消息通过网络来传递数据流。编码消息可包括预计用于某些客户端应用的压缩数据。在经过网络接收消息时,装置可对数据解压缩,并且将它存储在客户端应用所使用的独立数据结构中。为了提取感兴趣数据并且将其复制到数据结构中,装置配置成完全或部分理解编码消息。因此,装置使用额外存储器开销在处理期间存储消息内容。\n附图说明\n[0003] 图1是示出按照本文所公开实施例、用于编码消息的有效处理的系统的框图。\n[0004] 图2是按照本文所公开实施例的客户端装置的框图。\n[0005] 图3是按照本文所公开实施例的示例编码消息的框图表示。\n[0006] 图4示出按照本文所公开实施例、用于处理编码消息的示例伪代码。\n[0007] 图5是按照本文所公开实施例的示例库的框图。\n[0008] 图6是示出按照本文所公开的实施例、用于编码消息的有效处理的方法的流程图。\n[0009] 图7是示出按照本文所公开的实施例、用于编码消息的有效处理的另一种方法的流程图。\n具体实施方式\n[0010] 下面提供按照本公开的实施例的系统和方法的详细描述。虽然描述若干实施例,但是应当理解,本公开并不局限于任一个实施例,而是包含许多备选、修改和等效方面。另外,虽然在以下描述中提出许多具体细节、以便提供对本文所公开实施例的透彻了解,但是即使没有这些细节的部分或全部也能够实施一些实施例。此外,为了清楚起见,没有详细描述相关领域中已知的特定技术资料,以免不必要地影响对本公开的理解。\n[0011] 本文所公开的系统和方法可执行编码数据流的零副本处理,而无需传统处理方案的附加存储器开销。在某些实施例中,“迭代器”在无需存储器分配和/或副本开销的情况下以降低或最小的存储开销来有效地遍历编码消息。迭代器可返回与经过网络所接收的编码消息中的对象关联的指针。例如,当迭代器遇到消息中的预定(例如在通信协议中公知的)参数或令牌时,迭代器可返回指向其中存储与预定参数或令牌关联的数据(字符串)的本地静态和只读存储器位置的指针。当迭代器遇到编码消息中的专用值时,迭代器可返回指向所接收数据流中的对应偏移处的存储器位置的指针。\n[0012] 为了便于说明,本文所公开的某些实施例使用无线应用协议(WAP)和无线会话协议(WSP)。但是,本领域的技术人员通过本文的公开将会知道,本公开并不局限于此,并且本公开可适用于允许通信装置的互通的其它协议。WAP是由许多移动装置用于通信的开放国际标准,并且由开放移动联盟(OMA)组织来指导。WAP和WSP的技术描述和规范通过OMA可供使用。WAP标准描述一套协议,其允许基于WAP的应用和设备与不同网络技术(例如IS-95(又称作码分多址(CDMA))、全球微波接入互通(WiMAX)、蓝牙、全球移动通信系统(GSM)、通用移动电信系统(UMTS)、长期演进(LTE)等)的互通。具体来说,WSP标准由WAP浏览器和多媒体消息传递服务(MMS)来使用。包括移动装置管理(MDM)和数字版权管理(DRM)的许多服务依靠由WSP规范所提供的数据推送设施。\n[0013] 两个启用WAP的应用之间的通信的一种方法包括发送按照WSP所编码的消息。编码过程涉及将消息的某些部分压缩为二进制形式,其通过将公知的对象(例如报头、报头参数或其它值)编码为较短或压缩的二进制形式来实现。一般来说,消息然后由另一个装置或应用来发送和接收。在接收时,消息被解码/解压缩为独立数据结构,其表示然后可由客户端装置上的应用来表示的消息。一般来说,这要求客户端应用或客户端装置完全理解消息,以便提取信息并且将其复制为独立数据结构。\n[0014] 经常地,WSP解码例程是中间件或核心系统级应用编程接口(API)的部分,并且由大多数或全部启用WSP的应用再使用。由于这种性质,一般要求API是WSP协议的完整实现。\n这意味着,所有消息内容在解码阶段期间来处理和理解,并且可在每次消息被传递到装置中的新应用时重复进行。这要求额外存储器开销以在处理期间存储消息内容。这对具有有限存储器和/或有限电池的许多移动装置或嵌入式系统可能是有害的。此外,对于服务(例如构建于WSP之上以交换音频和视频内容的MMS),附加存储器开销因音频和视频内容所表示的数据的大部分的复制和存储而可能是相当昂贵的。另外,常常存在不要求消息的完全理解的状况。例如,一些应用可以仅需要处于WSP编码消息中的数据的一小部分。因此,完全理解以及解码过程中涉及的关联CPU、存储器、电池和电力使用能够导致显著低效。\n[0015] 因此,本文所公开的系统和方法提供编码消息的有效处理。在一个实施例中,有效处理包括执行WSP数据流和编码消息的零副本处理,而无需传统方案的开销。在一个实施例中,客户端装置使用WSP编码标准的某些结构方面来遍历编码消息,以查找是客户端装置或者客户端应用所感兴趣的所选对象。客户端装置然后可向客户端程序返回与所选对象关联的数据。客户端程序可根据需要来使用或处理数据。编码消息的遍历以及仅提供感兴趣的数据可允许编码状态中的消息的处理,并且能够限制对创建消息的解码或解压缩形式的需要。此外,不相关的编码消息的部分可以被忽略,以及只有与客户端程序相关的部分被理解、复制和/或处理。对应CPU、存储器和电池节省可产生。\n[0016] 在一个实施例中,遍历通过使用一种迭代器组件来实现,该迭代器组件能够以最小存储开销、极小或者没有存储器分配/副本开销以及极小或者没有CPU开销来有效地遍历WSP编码消息。例如,迭代器组件可遍历WSP编码消息的单独对象(例如报头和/或报头参数)。在一个实施例中,迭代器组件可查找下一个对象,以及应用或者另一组件可确定那个对象是否为客户端应用所感兴趣。如果对象是所感兴趣的,则关联数据可提供给客户端应用。在一些状况下,可提供指向数据或者指向独立库的指针,而不是从消息中复制数据。基于栈的存储器位置的使用实现对编译时间压缩和优化查找的支持。这可允许启用WSP的客户端(例如客户端应用)使用迭代器,并且仅处理与特定应用相关的信息对象。\n[0017] 使用编码消息的有效遍历,不需要处理或理解消息中的一切方面的应用能够略过不相关的对象。可以不需要处理和/或理解完全de 消息的客户端应用的一个示例可包括调度器(dispatcher)应用。如上所述,WSP提供数据推送的机制。调度器应用可接收由客户端装置所接收的所有WAP推送消息。调度器应用可负责将WAP推送消息调度到系统上的预计客户端应用。例如,WAP推送消息可预计用于基于OMA装置管理(OMA DM)或OMA客户端预备(OMA CP)的装置管理应用、基于OMA DRM的数字版权管理应用、vCard接触应用等。许多应用可以是预计接收方,因为许多网络运营商特定应用和服务也使用WAP推送。为了确定接收方而不有效遍历,调度器应用可解析WSP编码消息,以确定其多功能因特网邮件扩展(MIME)类型。\n对于一些方法,这可能要求整个消息的完整解码和复制。但是,基于本文所公开的实施例,迭代器组件能够有效地遍历消息,以查找指定MIME类型的对象、处理那个信息并且将消息转发到预计接收方应用。这能够改进效率,因为调度器应用不要求(并且可能甚至不能够使用)除了MIME类型之外的任何信息。因为调度器应用仅得到所需信息而忽略其它信息,所以等待时间和开销能够显著降低。\n[0018] 使用迭代器组件还允许WSP编码消息按照编码格式来存储。这可能限制对编码消息中的数据进行解码或使用所需的复制量。此外,因为编码消息常常小于解码消息,所以装置上的存储器使用可降低。另外或者在其它实施例中,多个应用或组件可并发地访问编码消息。因此,一个应用可从消息中读取图像或其它数据,同时另一个应用在同一时间周期期间读取音频或其它数据。类似地,因为能够有效地遍历编码消息,所以包括不是由任何客户端应用当前了解的数据的消息能够存储到这种应用被识别和安装为止。\n[0019] 此外,当大量有效载荷或其它数据包含在编码消息中时,可略过这个数据,从而引起对其它方法的显著存储器分配和处理器使用的节省。\n[0020] 图1是示出按照一个实施例、用于编码消息的有效处理的系统100的框图。系统100包括服务器102、WAP网关104和客户端装置106(示出两个)。系统100的组件102、104、106可通过网络108进行通信。在一个实施例中,例如,客户端装置106可使用有线或无线连接、通过网络108进行通信。对于无线通信,天线110可用来为客户端装置106提供经过网络108到系统100的其它组件102、104、106的无线连接。\n[0021] 服务器102可包括本领域已知的任何类型的硬件和/或软件。服务器102可向WAP网关104或客户端装置106提供数据、信息或其它内容。在一个实施例中,服务器102可以是提供网站内容的万维网服务器。例如,网页、视频、音频、多媒体、文本等可由服务器102提供给WAP网关104或客户端装置106的一个或多个。在另一个实施例中,服务器102可以是通信服务器,其将从另一个服务器或装置所接收的数据转发到系统100的组件。例如,语音通信、消息或其它数据可由服务器102从系统100的一个服务器、装置或组件转发到系统100的另一个组件。\n[0022] 服务器102可使用本领域已知的任何类型的通信协议。示例协议包括因特网协议(IP)、超文本传输协议(HTTP)、文件传输协议(FTP)、因特网消息访问协议(IMAP)、WAP等。许多其它类型的通信协议是本领域公知和明确定义的。\n[0023] 本领域的技术人员将会认识到本领域当前可用的WAP网关的变化和功能性。在一个实施例中,WAP网关104将内容从一个协议或格式转化成如WAP所定义的协议或格式之一。\n例如,WAP网关104可取按照HTTP所编码的内容,并且将它转化为无线标记语言(WML),这能够由移动装置或者其它具有WML能力的装置或软件来解释和/或处理。在一个实施例中,WAP网关104可位于网络108与客户端装置106之间。\n[0024] 在一个实施例中,WAP网关104可从服务器102或其它装置来接收按照第一语言或协议所编码的内容,并且将该内容转化为与WAP兼容的格式。因此,能够进行WAP通信的装置可以能够访问最初对其它装置或协议来设计或编码的内容。在一个实施例中,WAP网关104格式化客户端装置106的消息或其它数据单元。客户端装置106然后可以能够接收消息,并且根据预计来处理消息或其它数据单元。如本领域的技术人员将会理解,可根据协议或其它通信要求来使用其它类型的网关。\n[0025] 网络108可包括任何类型的通信网络。示例通信网络包括电缆网络、移动电话网络、卫星网络、计算网络、因特网等。在一个实施例中,网络108可包括多个较小网络。网络\n108可以能够进行有线和/或无线通信。在一个实施例中,网络可按照大量无线通信标准的一个或多个来实现,这些无线通信标准包括但不限于CDMA、WiMAX、蓝牙、GSM、UMTS、LTE等。\n在一个实施例中,网络108能够使用天线110或其它无线传输装置或系统与客户端装置106进行通信。\n[0026] 图1所示的系统100包括与网络108进行有线通信的客户端装置106以及经过天线\n110与网络108进行无线通信的客户端装置106。虽然未示出,但是天线110可表示无线网络的其它元件,例如基站或毫微微小区。客户端装置106可包括本领域已知的任何类型的通信装置或数据处理装置。示例客户端装置包括但不限于移动电话(例如功能电话或智能电话)、个人数字助理(PDA)、平板计算机、膝上型计算机、台式计算机等。按照一个实施例,客户端装置106可包括运行诸如MeeGo®、Android®、iOS®、Windows Phone®等的移动操作系统的移动信息处理装置。\n[0027] 在一个实施例中,客户端装置106可用来浏览万维网内容,发送消息,以及执行多种不同类型的通信或数据处理。客户端装置106可包括用于执行通信、媒体消费、因特网浏览等的不同功能的多个应用。在一个实施例中,客户端装置106可向另一个装置发送消息和/或从另一个装置接收消息。例如,从服务器102、WAP网关104或另一个客户端装置106所接收的数据可采取一个或多个消息的形式来接收。在一个实施例中,客户端装置106可配置成有效地处理从另一个装置所接收的编码消息。\n[0028] 图2是按照一个实施例的客户端装置106的框图。客户端装置106配置成有效地处理编码消息。客户端装置106可遍历编码消息,并且查找消息中是客户端程序所感兴趣的对象,而不对编码消息进行解码。如本文所使用的术语“对象”被给出以表示消息中的任何数据单元,例如报头、报头参数、有效载荷数据或者任何其它数据对象。所示客户端装置106包括接收器组件202、存储器组件204、迭代器组件206、确定组件208、返回组件210和一个或多个客户端应用212。组件202、204、206、208、210、212仅作为举例来示出,而可以没有包含在所有实施例中。例如,在多样化实施例中,客户端装置106可包括组件202、204、206、208、\n210、212中的两个或更多的其中之一或者任何组合。\n[0029] 在一个实施例中,接收器组件202接收编码消息。接收器组件202可通过网络108从另一个客户端装置106、WAP网关104、服务器102或者任何其它装置来接收编码消息。编码消息可按照协议来编码。在一个实施例中,编码消息按照WAP标准来编码。在一个实施例中,编码消息按照WSP来编码。\n[0030] 编码消息可包括多个对象。例如,消息可包括一个或多个报头、报头参数、有效载荷或其它对象。在一个实施例中,多个对象的至少一个对象按照紧凑二进制格式来编码。例如,可对于对象的至少一部分进行编码,使得它在编码状态中比在非编码状态中要小。在一个实施例中,编码消息可包括一个或多个协议数据单元(PDU),其可以是通过网络108发送的数据单元。在一个实施例中,编码消息可以是数据推送或数据拉取消息。在一个实施例中,协议可将一个或多个对象定义为公知对象。例如,公知对象可包括报头、报头参数或其它数据,其在协议中定义或者在协议中是公知的。协议还可定义公知对象的每个的紧凑二进制编码。例如,这可允许公知对象的紧凑和/或压缩编码,以限制消息的大小或者增加可包含在消息中的有效载荷数据量。因此,按照协议进行操作的装置或应用可以能够将编码或压缩的二进制编码理解或解释为对应的公知对象。在一个实施例中,编码消息可包括公知对象的紧凑二进制编码。\n[0031] 图3是按照一个实施例的示例编码消息300的框图表示。编码消息300可存储在存储器中,和/或通过有线或无线通信介质来传送。按照一个实施例,编码消息300按照WSP来编码。指针302、304、306、308指示编码消息300中的对象的位置。编码消息300包括表示为字节或位的一系列值。按照一个实施例,编码消息300包括对象,其表示供图1所示的客户端装置106和/或客户端应用112进行处理的数据。虽然在图3中仅示出少量对象,但是本领域的技术人员将会认识到,在一些实施例中大量对象可存在。\n[0032] 按照某些实施例,消息中的对象采取压缩或者未压缩格式。通过指针302所指示的对象是具有“X-New-Header”的未压缩值的报头。按照一个实施例,在指针302的报头对象是定制对象,并且因而处于未编码或者未压缩状态,即使编码消息300处于编码状态。例如,值“X-New-Header”可以没有WSP所定义的紧凑二进制编码。在指针302的对象之后接着在指针\n304的参数对象,其具有“paramvalues”的未压缩值。在指针304的参数对象再次是未压缩的,因为它是定制值。也就是说,值“paramvalues”可以没有WSP所定义的紧凑二进制编码。\n[0033] 指针306指向具有值“0x80”(十六进制80)的报头对象。报头对象“0x80”可以是公知报头的二进制编码。例如,二进制编码“0x80”可通过WSP定义为未压缩报头“接受”的紧凑编码。指针306之后接着指针308,其指向具有值“0x94”(十六进制94)的参数对象。参数对象“0x94”是公知参数值的二进制编码。例如,二进制编码“0x94”可通过WSP定义为未压缩参数值“application/vnd.wap.wmlc”的紧凑编码。\n[0034] 编码消息300仅作为举例来提供。例如,在其它实施例中,其它编码消息可按照其它协议或标准来编码。本领域的技术人员将会认识到在结构、长度、编码等方面具有相当大变化的编码消息。\n[0035] 回到图2,客户端装置106的存储器组件204可存储客户端装置106的数据。在一个实施例中,存储器组件204可包括用于存储数据的存储器。按照一个实施例,存储器可包括只读存储器。在另一个实施例中,存储器可包括可写存储器。在一个实施例中,存储器可包括只读和可写存储器。在一个实施例中,存储器组件204可存储编码消息、例如图3的编码消息300。存储器组件204可存储客户端装置106的其它组件、例如代码。例如,接收器组件202、迭代器组件206、确定组件208、返回组件210和/或(一个或多个)客户端应用212可驻留在存储器组件204的存储器中。组件202、204、206、208、210、212或者其部分也可实现为硬件、固件等。存储器组件204还可存储解码对象值的库(参见图5)。\n[0036] 在一个实施例中,迭代器组件206遍历编码消息,以查找编码消息中的对象。在一个实施例中,迭代器组件206可与确定组件208进行交互,如以下所述,以查找编码消息中的所选对象。在一个实施例中,迭代器组件206可遍历编码消息,以查找所选对象。所选对象可以是由另一个应用、例如客户端应用212所选的对象。\n[0037] 在一个实施例中,迭代器组件206可遍历编码消息,以识别编码消息中的下一个对象。迭代器组件206可将所识别的下一个对象指定为当前对象。例如,遍历编码消息中的一个或多个对象可包括查找接着迭代器组件206在编码消息中所跟踪的当前位置的随后对象。迭代器组件206可基于协议或者另一标准所要求的结构来识别编码消息中的对象。例如,迭代器组件206可基于WSP标准所施加的要求来遍历图3的编码消息300。在一个实施例中,迭代器组件206可查找编码消息中指示新对象的开始的值,或者可寻找特定报头、参数或编码二进制值。\n[0038] 按照一个实施例,迭代器组件206遍历编码消息,而无需对编码消息进行解码。在一个实施例中,迭代器组件206可遍历编码消息,而无需创建编码消息的未编码版本。在一个实施例中,迭代器组件206可引用如协议所定义的对象的库,而无需创建消息的未编码版本,和/或无需创建消息中的对象的未编码版本。例如,迭代器组件206可遍历编码消息,而无需创建消息的任何部分的解码副本。在一个实施例中,二进制编码的解码因具有解码对象值的库而可以是不需要的。\n[0039] 确定组件208可确定迭代器组件206所识别的对象是否为所选对象。按照一个实施例,所选对象是由客户端应用212来选择的对象。所选对象可以是客户端应用212所感兴趣的对象,以用于处理或控制客户端应用212的操作。例如,编码消息的一些对象可以是与客户端应用212的操作不相关的,而其它对象是相关的。按照一个实施例,只有相关的那些对象是所选对象,以及确定组件208确定迭代器组件206所识别的对象是否为所选对象。\n[0040] 按照一个实施例,确定组件208将对象与对应于客户端应用212的一个或多个所选对象进行比较。例如,客户端应用212可提供所选对象的列表,其在编码消息中被找到时应当提供给客户端应用212。在一个实施例中,确定组件208将对象与所选对象的列表比较。如果对象对应于所选对象的列表中的对象,则确定组件208可确定对象是所选对象。\n[0041] 按照一个实施例,确定组件208将对象的值与所选对象的列表中的值进行比较。例如,如果迭代器组件206所识别的对象的值匹配所选对象的列表中的值,则确定组件208可确定对象是所选对象。按照另一个实施例,确定组件208可查找库中与迭代器组件206所识别的对象对应的值。例如,如果迭代器组件206所识别的对象是紧凑二进制编码,则确定组件208可查找库中与紧凑二进制编码对应的值。库中的值然后可与所选对象的列表中的值进行比较。\n[0042] 返回组件210返回与所选对象关联的数据。在一个实施例中,返回组件210可向客户端应用212返回数据。按照一个实施例,可响应迭代器组件206和确定组件208查找到所选对象而返回数据。在一个实施例中,返回组件210可响应确定组件208确定迭代器组件206所识别的对象是所选对象而返回数据。\n[0043] 在一个实施例中,返回组件210可返回对象的值。在另一个实施例中,返回组件210可返回指向与对象关联的数据的指针。在一个实施例中,指针可指向编码消息中对象所在的位置。在另一个实施例中,指针可指向库中具有与消息中的对象对应的值的位置。例如,所选对象可对应于如协议所定义的公知对象,并且指针可指向库中存储公知对象的未编码版本的预定存储器位置。\n[0044] 一个或多个客户端应用212可包括可运行于客户端装置106的任何应用。按照一个实施例,客户端应用212可以是使用经过网络消息所接收的数据的应用,例如万维网浏览器、音频播放器、视频播放器、图像查看器、消息传递应用或者任何其它应用。在一个实施例中,客户端应用212可包括调度器应用,其处理入局消息,并且通知预计接收方应用关于消息的接收。其它示例应用包括文本消息传递应用、多媒体消息传递应用等。\n[0045] 来看图3、图4和图5,示出客户端装置116的组件202、204、206、208、210、212之间的示例交互以处理编码消息。如先前所述,图3示出示例编码消息的框图。图4示出按照一个实施例、用于处理编码消息的示例伪代码400。图5是按照一个实施例的示例库500的框图。库\n500包括公知的报头和公知的参数。指针502和504示为指向库中的值。在一个实施例中,库\n500可包括只读值,其可由客户端应用来修改。库500因其中存储库500的存储器的类型而可以是只读的,或者可以是如操作系统或其它存储器管理应用或组件所管理的只读存储器。\n在一个实施例中,库500可用作用于解释编码二进制值的查找表。\n[0046] 图4的伪代码400包括“iter_init(…)”指令,其可用来初始化迭代器组件206。在一个实施例中,迭代器组件206可采用图3的编码消息300的存储器地址来初始化。\n[0047] “iter_next(…)”指令可使迭代器组件206和确定组件208共同工作,以查找编码消息300中的下一个所选对象。在这个示例中,“iter_next(…)”指令可使迭代器组件206查找在编码消息300中的指针302的位置的对象。迭代器组件206可通过存储指针302作为指向当前对象的指针,来跟踪对象的存储器位置。例如,迭代器组件206可存储与指针302所指向的位置对应的存储器位置值。在另一个实施例中,“iter_next(…)”指令可使迭代器组件\n206略过指针302处的对象到达指针306处的对象。例如,如果“X-New-Header”不是客户端应用的所选对象,则“iter_next(…)”指令可略过那个对象。\n[0048] “return_header()”指令使返回组件210返回指向迭代器组件206所跟踪的当前指针的位置处的报头值的指针。例如,假定在指针302的对象是所选对象,则返回指向“X-New-Header”的指针302。“return_param()”指令返回指向接着迭代器组件206所跟踪的当前指针的位置处的报头的参数值的指针。例如,返回指向“paramvalues”的指针304。\n[0049] “iter_next(…)”指令使迭代器组件206查找编码消息300中的下一个所选对象。\n在这个示例中,所选对象位于指针306。按照一个实施例,“return_header()”和“return_param()”返回指向编码消息中的位置的指针。例如,“return_header()”指令可返回指针\n306,以及“return_param()”可返回指针308。按照另一个实施例,“return_header()”和“return_param()”返回指向库中的存储器位置的指针。例如,“return_header()”指令可返回库500中的指针502,以及“return_param()”可返回库500中的指针504。例如,编码消息300中的值“0x80”可以是编码二进制值,其对应于WSP中的“Accept”,以及“0x94”可以是编码二进制值,其对应于WSP中的“application/vnd.wap.wmlc”。\n[0050] 在一个实施例中,“iter_next(…)”、“return_header()”和“return_param()”指令可重复进行到已经遍历编码消息300并且已经查找全部所选对象为止。例如,在一些实施例中,可使用创建使指令被运行到已经查找全部所选对象为止的循环的代码。\n[0051] 图6是按照一个实施例、用于编码消息的有效处理的方法600的流程图。方法600可例如由图2所示的客户端装置106和/或图1所示的系统100来执行。应当注意,在至少一些实施例中,相对系统100或客户端装置106所述的功能性或特征的任一个可包含在方法600中。\n[0052] 方法600开始,并且接收器组件202接收605编码消息。编码消息可从网络、例如无线通信网络或另一网络来接收605。编码消息可按照协议来编码。在一个实施例中,编码消息按照WSP来编码。在一个实施例中,编码消息包括多个对象。多个对象可包括报头、参数或其它值。\n[0053] 方法600包括迭代器组件206遍历610编码消息的多个对象,以查找所选对象。在一个实施例中,编码消息在遍历610期间没有解码。迭代器组件206可基于协议的结构要求来查找所选对象。例如,按照WSP所编码的编码消息可具有WSP所需的特定结构。在一个实施例中,迭代器组件206遍历610编码消息,以查找WSP所定义的对象或结构。所选对象可以是客户端应用所选的对象。例如,客户端应用可具有将要由迭代器组件206来查找的一个或多个对象的关联列表。列表上的对象可以是所选对象。方法600包括返回组件210,其返回615与所选对象关联的数据。在一个实施例中,向客户端应用返回615关联数据。返回组件210可响应所选对象的位置而返回615关联数据。在一个实施例中,所返回615的关联数据可包括报头值、参数值或者从编码消息所复制的另一值。在另一个实施例中,所返回615的关联数据可包括指向存储器中的位置的指针。在一个实施例中,指针指向编码消息中的位置。在另一个实施例中,指针指向库中的位置。\n[0054] 图7是按照一个实施例、用于编码数据流的有效处理的方法700的流程图。与图6的方法600相似,方法700包括具有以上所述变化的任一个的接收605、遍历610和返回615。但是,如下所述,方法700还包括确定705当前对象是否为所选对象,并且确定710是否存在附加所选对象。此外,以上相对系统100、客户端装置106或方法600所述的功能性或特征可包含在方法700中。\n[0055] 方法700包括确定组件208确定705对象是否为所选对象。确定组件208可将迭代器组件206所识别的对象与所选对象的列表进行比较。所选对象的列表可包括一个或多个对象,其在被查找时提供给客户端应用。例如,所选对象可包括可由客户端应用来处理的对象。\n[0056] 方法700还包括确定710是否存在附加所选对象。如果存在附加对象(在710的“是”),则方法700可重复进行如上所述的遍历610、确定705和返回615。如果不存在附加对象(在710的“否”),则方法700可结束。这可允许方法在完成编码消息的遍历之前结束。在一些状况下,在来自编码消息的极少信息被客户端程序所要求时,处理节省能够相当显著。\n[0057] 能够与本文所公开实施例配合使用的基础设施的一部分已经是可用的,例如通用计算机、移动电话、计算机编程工具和技术、数字存储介质以及通信网络。计算装置可包括处理器,例如微处理器、微控制器、逻辑电路等。处理器可包括专用处理装置,例如ASIC、PAL、PLA、PLD、FPGA或者其它定制或者可编程装置。计算装置还可包括计算机可读存储装置,例如非易失性存储器、静态RAM、动态RAM、ROM、CD-ROM、盘、带、磁、光、闪速存储器或者其它计算机可读存储介质。\n[0058] 某些实施例的各个方面可使用硬件、软件、固件或者其组合来实现。组件或模块可表示或包括运行一个或多个软件或固件程序的专用集成电路(ASIC)、电子电路、处理器(共享、专用或编组)和/或存储器(共享、专用或编组)、组合逻辑电路和/或提供所述功能性的其它适当组件或者作为其部分。如本文所使用的软件模块或组件可包括位于非短暂性计算机可读存储介质之中或之上的任何类型的计算机指令或计算机可执行代码。软件模块或组件例如可包括计算机指令的一个或多个物理或逻辑块,其可组织为执行一个或多个任务或者实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。\n[0059] 在某些实施例中,特定软件模块或组件可包括不同位置中存储的不同指令,其共同实现模块或组件的所述功能性。实际上,模块或组件可包括单个指令或者多个指令,并且可分布于若干不同代码段之上、不同程序之间以及跨若干计算机可读存储介质分布。一些实施例可在分布式计算环境中实施,其中任务由经过通信网络所链接的远程处理装置来执行。\n[0060] 本文所公开的系统和方法不是与任何特定计算机或其它设备固有地相关,并且可通过硬件、软件和/或固件的适当组合来实现。软件实现可包括其中包含可执行代码/指令的一个或多个计算机程序,可执行代码/指令在由处理器运行时可使处理器执行至少部分由可执行指令所定义的方法。计算机程序能够通过任何形式的编程语言(包括编译或解释语言)来编写,并且能够通过任何形式来部署,包括作为独立程序或者作为模块或组件、组件、子例程或者适合于计算环境中使用的其它单元。此外,计算机程序可部署成在一个计算机或者在一个站点处或分布于多个站点并且通过通信网络互连的多个计算机上运行。软件实施例可实现为包括配置成存储计算机程序和指令的非短暂性存储介质的计算机程序产品,计算机程序和指令在由处理器运行时配置成使处理器执行按照指令的方法。在某些实施例中,非短暂性存储介质可采取能够在非短暂性存储介质上存储处理器可读指令的任何形式。非短暂性存储介质可通过压缩盘、数字视频光盘、磁带、磁盘、穿孔卡片、闪速存储器、集成电路或者任何其它非短暂性数字处理设备存储器装置。\n[0061] 虽然为了清楚起见而更详细描述了上文,但是将会显而易见,可进行某些变化和修改,而没有背离其原理。应当注意,存在实现本文所述过程和设备的许多备选方式。相应地,本实施例将被视作说明性而不是限制性的,以及本发明不限于在此提供的详细情况,而是可在所附权利要求书的范围和等效体之内进行修改。\n[0062] 参照各个实施例描述了以上说明书。但是,本领域的技术人员将会理解,能够进行各种修改和变更,而不背离本公开的范围。例如,各种操作步骤以及用于执行操作步骤的组件可按照备选方式来实现,这取决于特定应用或者考虑与系统的操作关联的任何数量的成本函数。相应地,步骤的任何一个或多个可被删除、修改或者与其它步骤相结合。此外,本公开将要被看作是说明性而不是限制性的,以及所有这类修改预计包含在其范围之内。同样,以上针对各个实施例描述了有益效果、其它优点和问题的解决方案。但是,有益效果、优点、问题的解决方案以及可使任何有益效果、优点或解决方案发生或者变得更为显著的任何元素不是要理解为关键、必要或本质特征或元件。如本文所使用的术语“包括”、“包含”用其任何其它变化意在涵盖非排他的包含,使得包括元件列表的过程、方法、产品或设备不仅包括那些元件,而且还可包括未明确列示或者这种过程、方法、系统、产品或设备固有的其它元件。另外,如本文所使用的术语“耦合”及其任何其它变化预计涵盖物理连接、电连接、磁连接、光连接、通信连接、功能连接和/或任何其它连接。\n[0063] 本领域的技术人员将会理解,可对上述实施例的细节进行许多变更,而不背离本发明的基本原理。因此,本发明的范围应当仅由以下权利要求书来确定。
法律信息
- 2020-04-17
专利权的转移
登记生效日: 2020.03.31
专利权人由英特尔公司变更为苹果公司
地址由美国加利福尼亚州变更为美国加利福尼亚州
- 2019-02-12
- 2015-02-04
实质审查的生效
IPC(主分类): H04W 4/12
专利申请号: 201380023665.8
申请日: 2013.05.17
- 2015-01-07
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2009-01-14
|
2007-07-09
| | |
2
| | 暂无 |
2000-12-21
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |