[go: up one dir, main page]

CN102165818B - Coordinating data delivery using time suggestions - Google Patents

Coordinating data delivery using time suggestions Download PDF

Info

Publication number
CN102165818B
CN102165818B CN200980138071.5A CN200980138071A CN102165818B CN 102165818 B CN102165818 B CN 102165818B CN 200980138071 A CN200980138071 A CN 200980138071A CN 102165818 B CN102165818 B CN 102165818B
Authority
CN
China
Prior art keywords
time
computing equipment
computing device
passing time
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN200980138071.5A
Other languages
Chinese (zh)
Other versions
CN102165818A (en
Inventor
A·P·特兰
K·雷斯尼克
S·A·洛尔
M·S·拉森
A·刘
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of CN102165818A publication Critical patent/CN102165818A/en
Application granted granted Critical
Publication of CN102165818B publication Critical patent/CN102165818B/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • H04L67/62Establishing a time schedule for servicing the requests
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • H04L67/61Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources taking into account QoS or priority requirements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W72/00Local resource management
    • H04W72/12Wireless traffic scheduling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W56/00Synchronisation arrangements

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Information Transfer Between Computers (AREA)
  • Power Sources (AREA)
  • Telephonic Communication Services (AREA)

Abstract

Coordinating delivery of data to a first computing device from a plurality of second computing devices based on known power times for a resource associated with the first computing device. One of the second computing devices requests a time interval for data delivery. The first computing device compares the requested time interval to the known power times to determine a delivery time. For example, the requested time interval is compared against activation times for recurrent schedules that use the resource, and against previously determined delivery times. The second computing device delivers data at the determined delivery time to preserve the resource. In some embodiments, the delivery time is adjusted for processing delays and network latency.

Description

使用时间建议来协调数据传递Use time proposals to coordinate data delivery

背景background

近年来,诸如移动电话和个人数字助理(PDA)等移动计算设备已经变得日益流行。随着设备不断变小,在诸如存储器、存储、带宽和电池电量等资源方面存在日益增长的限制。另外,更多的应用程序现在正以日益增长的水平消耗着这些资源。例如,许多应用程序执行诸如与需要频繁使用无线电的服务器同步等的循环任务。在打开移动计算设备上的无线电的电源来发送数据之后,无线电需要花几秒钟来关闭电源(例如,在2.5G网络上大约3秒而在3G网络上大约20秒)。该无线电“尾”吸收电能并减短了移动计算设备上的电池寿命。此外,在自旋无线电和关闭无线电时存在其他的能源低效性。In recent years, mobile computing devices, such as mobile phones and personal digital assistants (PDAs), have become increasingly popular. As devices continue to get smaller, there are growing constraints on resources such as memory, storage, bandwidth, and battery power. Additionally, more applications are now consuming these resources at increasing levels. For example, many applications perform recurring tasks such as synchronizing with servers that require heavy use of the radio. After the radio on the mobile computing device is powered on to transmit data, it takes a few seconds for the radio to power off (eg, about 3 seconds on a 2.5G network and about 20 seconds on a 3G network). This radio "tail" absorbs power and reduces battery life on mobile computing devices. Additionally, there are other energy inefficiencies in spinning the radio and turning it off.

移动用户正广泛地采用带有实时数据推送或更新的连接的应用程序。这些应用程序包括电子邮件、个人信息管理、在场信息和其他web应用程序。服务器用未经协调的方式来推送数据,从而使得移动计算设备上的电池寿命降级而负面地影响用户体验。Mobile users are widely adopting connected applications with real-time data push or updates. These applications include e-mail, personal information management, presence information and other web applications. Servers push data in an uncoordinated manner, thereby degrading battery life on mobile computing devices and negatively impacting user experience.

概述overview

本发明的各实施例协调从多个第二计算设备到至少一个第一计算设备的数据传递。该第二计算设备中的一个请求用于数据传递的时间间隔。第一计算设备将所请求的时间间隔与同第一计算设备相关联的通信资源的多个已知电源开启时间进行比较。确定传递时间并将传递时间提供给第二计算设备。协调数据传递保留了第一计算设备上的通信资源。在某些实施例中,出于处理延时和网络等待时间来调整所确定的传递时间。Embodiments of the invention coordinate the transfer of data from multiple second computing devices to at least one first computing device. A time interval for data transfer is requested by one of the second computing devices. The first computing device compares the requested time interval to a plurality of known power-on times for communication resources associated with the first computing device. A delivery time is determined and provided to the second computing device. Coordinated data transfer preserves communication resources on the first computing device. In some embodiments, the determined delivery time is adjusted for processing latency and network latency.

提供本概述以便以简化形式介绍将在以下的详细描述中进一步描述的一些概念。本概述并非旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。This Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter.

附图简述Brief description of the drawings

图1是示出第一计算设备从多个第二计算设备接收数据的示例性框图。1 is an exemplary block diagram illustrating a first computing device receiving data from a plurality of second computing devices.

图2是示出用于存储资源的已知电源开启时间的计算设备以及用于实现本发明各方面的计算机可执行组件的示例性框图。2 is an exemplary block diagram illustrating a computing device for storing known power-on times of resources and computer-executable components for implementing aspects of the invention.

图3是示出将所请求的时间间隔与循环时间表的激活时间以及先前建议的传递时间进行比较来确定传递时间以向服务器提出建议的示例性流程图。FIG. 3 is an exemplary flowchart illustrating comparing a requested time interval with an activation time of a recurring schedule and previously suggested delivery times to determine a delivery time to make a recommendation to a server.

图4是示出确定数据传递时间并基于处理延时和网络等待时间来调整所确定的传递时间的示例性流程图。4 is an exemplary flowchart illustrating determining data delivery times and adjusting the determined delivery times based on processing delays and network latencies.

图5是示出基于与移动计算设备相关联的通信资源的已知电源开启时间来确定数据传递时间的示例性流程图。5 is an exemplary flow diagram illustrating determining data transfer times based on known power-on times of communication resources associated with a mobile computing device.

图6是示出从两个服务器到移动计算设备的数据传递的调度的示例性序列图。6 is an exemplary sequence diagram illustrating the scheduling of data delivery from two servers to a mobile computing device.

在附图中,对应的附图标记指示对应的部分。Corresponding reference numerals indicate corresponding parts throughout the drawings.

详细描述A detailed description

参考附图,本发明的各实施例协调从多个第二计算设备104到至少一个第一计算设备102的数据传递以降低第一计算设备102上的通信资源的消耗。在某些实施例中,第一计算设备102向第二计算设备104提供传递时间的提示、建议、推荐或分配(例如,最优传递时间)从而使得多个第二计算设备104在同一时间或大约同一时间向第一计算设备102发送数据。在第一计算设备102是移动计算设备602的示例中,经协调的数据传递充分利用一个或多个蜂窝无线电的已知电源开启时间(例如,无线电自旋)来保存移动计算设备602上的电池寿命。然而,在其他示例中,本发明的各方面可用于保存第一计算设备102上的任何资源、降低其消耗、延长其寿命或对其进行优化。Referring to the figures, embodiments of the invention coordinate data transfer from multiple second computing devices 104 to at least one first computing device 102 to reduce consumption of communication resources on the first computing device 102 . In some embodiments, the first computing device 102 provides prompts, suggestions, recommendations, or assignments of delivery times (e.g., optimal delivery times) to the second computing devices 104 such that multiple second computing devices 104 can be delivered at the same time or Data is sent to first computing device 102 at about the same time. In the example where the first computing device 102 is a mobile computing device 602, the coordinated data transfer takes advantage of the known power-on times (e.g., radio spins) of one or more cellular radios to conserve battery on the mobile computing device 602 life. In other examples, however, aspects of the invention may be used to conserve, reduce consumption, extend life, or optimize any resource on first computing device 102 .

在某些实施例中,移动计算设备602利用已知的调度数据来标识下一个排定的无线电时间,预留网络等待时间214,随后将该时间发布给感兴趣的应用程序或服务器。在一个示例中,所发布的时间稍早于下一个排定的无线电时间从而使得服务器通信和设备时间表两者都能充分利用同一个无线电自旋。例如,设备时间表是在上午9点激活,则所发布的时间是上午8:59:45。随后唤起无线电的服务器通信在上午8:59:45发生。In some embodiments, the mobile computing device 602 utilizes known scheduling data to identify the next scheduled radio time, reserves the network latency 214, and then publishes this time to interested applications or servers. In one example, the published time is slightly ahead of the next scheduled radio time so that both server communications and device schedules can take advantage of the same radio spin. For example, a device schedule activated at 9:00 AM will publish a time of 8:59:45 AM. Subsequent server communication to evoke the radio occurred at 8:59:45 AM.

在有“模糊”或容限因子与时间表208中的每一个相关联的实施例中,容限因子向目标提供较大的时间窗口并协调第二计算设备104联系第一计算设备102的时间。在带有具有50%的容限因子的十分钟间隔时间表的示例中,第二计算设备104可以在时刻5和时刻10之间的任意时间联系第一计算设备102来充分利用无线电自旋。容限因子提高了充分利用无线电自旋的可能性。In embodiments where there is a "fuzz" or tolerance factor associated with each of the schedules 208, the tolerance factor provides a larger window of time to the target and coordinates when the second computing device 104 contacts the first computing device 102 . In an example with a ten-minute interval schedule with a tolerance factor of 50%, second computing device 104 may contact first computing device 102 at any time between time 5 and time 10 to fully utilize the radio spin. The margin factor increases the likelihood of fully utilizing the radio spin.

再次参考图1,示例性框图示出第一计算设备102从多个第二计算设备104接收数据,该多个第二计算设备诸如第二计算设备#1到第二计算设备#N,其中N是正整数。第二计算设备104经由诸如例如因特网等网络106被连接到第一计算设备102。在某些实施例中,调度器108或其他组件、指令或逻辑对第一计算设备102执行诸如图3、图4和图5所示的操作。Referring again to FIG. 1 , an exemplary block diagram shows a first computing device 102 receiving data from a plurality of second computing devices 104, such as second computing device #1 through second computing device #N, where N is a positive integer. The second computing device 104 is connected to the first computing device 102 via a network 106 such as, for example, the Internet. In some embodiments, the scheduler 108 or other component, instruction or logic performs operations such as those shown in FIGS. 3 , 4 and 5 on the first computing device 102 .

第二计算设备104执行服务来周期性地(例如,定期地或间歇地)向第一计算设备发送数据。在某些实施例中,第二计算设备104向第一计算设备102提供实时内容更新(例如,push mail(推送邮件)、日历、联系人、即时消息收发和社交网络数据)。第二计算设备104还可以发送或接收心跳查验来保持第二计算设备104和第一计算设备102之间的连接畅通。The second computing device 104 executes the service to periodically (eg, periodically or intermittently) send data to the first computing device. In some embodiments, the second computing device 104 provides real-time content updates (eg, push mail, calendar, contacts, instant messaging, and social networking data) to the first computing device 102. The second computing device 104 may also send or receive heartbeat pings to keep the connection between the second computing device 104 and the first computing device 102 open.

第二计算设备104包括但不限于,服务器、代理服务器、企业服务器、或将数据发送给第一计算设备102的任何其他设备。此外,虽然在某些实施例中参考包括移动计算设备602的第一计算设备102来进行描述,但本发明的各方面可用于诸如膝上型计算机、游戏控制台、手持式导航设备等其他设备、或与第二计算设备104进行通信的任何其他设备。另外,虽然本发明的各实施例参考将数据发送给移动计算设备602的服务器来进行描述,但本发明的各方面可在诸如第一计算设备102和第二计算设备104之间的对等连接等其他环境中操作。The second computing device 104 includes, but is not limited to, a server, proxy server, enterprise server, or any other device that sends data to the first computing device 102 . Additionally, while described in certain embodiments with reference to a first computing device 102 including a mobile computing device 602, aspects of the invention may be used with other devices such as laptop computers, game consoles, handheld navigation devices, etc. , or any other device in communication with the second computing device 104 . Additionally, while embodiments of the invention are described with reference to a server sending data to mobile computing device 602 , aspects of the invention may be implemented in, for example, a peer-to-peer connection between first computing device 102 and second computing device 104 operate in other environments.

接着参考图2,示例性框图示出用于存储资源的已知电源开启时间的计算设备202以及用于实现本发明各方面的计算机可执行组件,所述计算设备202诸如第一计算设备102。计算设备202包括处理器204和存储器区域206或其他计算机可读介质。存储器区域206存储多个时间表208,诸如时间表#1到时间表#M,其中M是正整数。时间表208与第二计算设备104相关联并由第二计算设备104提供来将数据发送给计算设备202。应用程序执行相应的时间表208来将数据发送至诸如相关联的第二计算设备104等设备或从所述设备中接收数据,这使得诸如计算设备202上的蜂窝无线电等通信接口的电源开启。例如,应用程序由计算设备202主存。时间表208中的每一个具有激活时间210,并且每一个时间表208与第二计算设备104中的至少一个相关联。在某些实施例中,时间表208具有循环激活时间210。Referring next to FIG. 2, an exemplary block diagram illustrates a computing device 202, such as the first computing device 102, for storing known power-on times of resources and computer-executable components for implementing aspects of the present invention. . Computing device 202 includes a processor 204 and a memory area 206 or other computer-readable media. The memory area 206 stores a plurality of schedules 208, such as schedule #1 to schedule #M, where M is a positive integer. Schedule 208 is associated with second computing device 104 and provided by second computing device 104 to send data to computing device 202 . The application executes a corresponding schedule 208 to send data to or receive data from a device, such as the associated second computing device 104 , which causes the communication interface, such as a cellular radio on the computing device 202 , to be powered on. For example, an application program is hosted by computing device 202 . Each of schedules 208 has an activation time 210 , and each schedule 208 is associated with at least one of second computing devices 104 . In some embodiments, schedule 208 has recurring activation times 210 .

时间表208的执行包括在激活时间210完成或执行与时间表208相关联的一个或多个动作。例如,激活时间210将相关联的第二计算设备104要向计算设备202发送数据的时间表示为绝对值或偏移量。数据的传输使用计算设备202上的耗电资源(例如,诸如一个或多个蜂窝无线电等的通信资源或无线电资源)。虽然时间表208表示期间要使用通信资源的已知将来时间,但存储器区域206可以另选地或另外地显式地存储通信资源的一个或多个已知电源开启时间。Execution of schedule 208 includes completing or performing one or more actions associated with schedule 208 at activation time 210 . For example, activation time 210 represents the time at which associated second computing device 104 is to send data to computing device 202 as an absolute value or offset. Transmission of data uses power-consuming resources on computing device 202 (eg, communication resources or radio resources such as one or more cellular radios). While schedule 208 represents known future times during which the communication resource is to be used, memory region 206 may alternatively or additionally explicitly store one or more known power-on times for the communication resource.

在某些实施例中,存储在存储器区域206中的时间表208包括条件时间表208、无条件时间表208、消耗通信资源的时间表208以及不消耗通信资源(或要被优化的其他资源)的时间表208。在这些实施例中,计算设备202在确定传递时间时过滤、搜索或以其他方式生成时间表208的子集。例如,无条件时间表208与条件时间表208相比具有较大的被执行的可能性(例如,最大执行可能性),并且由此,在确定传递时间时,与无条件时间表208相关联的激活时间210被赋予比与条件时间表208相关联的激活时间210更高的优先级或偏好。In some embodiments, the schedules 208 stored in the memory area 206 include conditional schedules 208, unconditional schedules 208, schedules 208 that consume communication resources, and schedules that do not consume communication resources (or other resources to be optimized). Schedule 208. In these embodiments, computing device 202 filters, searches, or otherwise generates a subset of schedule 208 when determining delivery times. For example, unconditional schedule 208 has a greater likelihood of being executed (e.g., a maximum likelihood of execution) than conditional schedule 208, and thus, when determining delivery time, the activation associated with unconditional schedule 208 Time 210 is given a higher priority or preference than activation time 210 associated with conditional schedule 208 .

在其他实施例中,对时间表208进行预先排序、预先过滤或以其他方式进行分组。例如,存储器区域可以存储分开的条件、无条件、资源消耗和无资源消耗的时间表208的各组,以加快传递时间的确定。In other embodiments, the schedule 208 is pre-sorted, pre-filtered, or otherwise grouped. For example, the memory area may store separate sets of conditional, unconditional, resource consumption, and no resource consumption schedules 208 to expedite delivery time determination.

存储器区域206还存储处理延时212和网络等待时间214。处理延时212表示由于计算设备202上的处理而导致的延时。网络等待时间214表示由于数据到计算设备202的网络106传输而导致的延时。在某些实施例中,处理延时212和网络等待时间214中的任一个或两者被表达为偏移量。计算设备202使用处理延时212和网络等待时间214来提供更准确的传递时间。在某些实施例中,处理延时212和网络等待时间214由计算设备202确定(例如,测量在处理或网络传输期间的时间差)。在其他实施例中,将网络等待时间214提供给计算设备202(例如,通过用设备将数据发送给计算设备202)。Memory area 206 also stores processing latency 212 and network latency 214 . Processing latency 212 represents a delay due to processing on computing device 202 . Network latency 214 represents delays due to network 106 transmission of data to computing device 202 . In some embodiments, either or both of processing latency 212 and network latency 214 are expressed as offsets. Computing device 202 uses processing delay 212 and network latency 214 to provide a more accurate delivery time. In some embodiments, processing latency 212 and network latency 214 are determined by computing device 202 (eg, measuring time differences during processing or network transmission). In other embodiments, network latency 214 is provided to computing device 202 (eg, by sending data to computing device 202 with the device).

存储器区域206还存储一个或多个先前确定的传递时间216。先前确定的传递时间216表示用于向计算设备202传递数据的提示时间或建议时间。先前确定的传递时间216表示在将来发生的时间。在当前时间是下午12:30的示例中,计算设备202确定传递时间为下午12:40并将该传递时间提供给第一应用程序。在从第二应用程序接收到传递时间的请求之后,计算设备202知晓先前确定的传递时间为下午12:40并能够考虑将该时间提供给第二计算设备104来协调计算设备202上的通信资源的使用,如以下参考图3更详细地描述的。Memory area 206 also stores one or more previously determined delivery times 216 . The previously determined transfer time 216 represents a prompt or suggested time for transferring data to the computing device 202 . A previously determined delivery time 216 represents a time occurring in the future. In the example where the current time is 12:30 PM, computing device 202 determines that the delivery time is 12:40 PM and provides the delivery time to the first application. After receiving a request to deliver a time from the second application, computing device 202 knows that the previously determined delivery time is 12:40 PM and can consider providing that time to second computing device 104 to coordinate communication resources on computing device 202 The use of , as described in more detail below with reference to FIG. 3 .

存储器区域206还存储一个或多个计算机可执行组件,诸如接口组件218、高速缓存组件220、提示组件222和发布组件224。这些组件的操作在下文中参考图5来描述。Memory area 206 also stores one or more computer-executable components, such as interface component 218 , cache component 220 , prompt component 222 , and publish component 224 . The operation of these components is described below with reference to FIG. 5 .

接着参考图3,示例性流程图示出将所请求的时间间隔与时间表208的激活时间210以及先前建议的传递时间216进行比较来确定传递时间以向服务器提出建议。在302处,诸如第一计算设备102等的计算设备从诸如服务器或第二计算设备104等的另一计算设备接收所请求的时间值。在某些实施例中,时间值包括指定最小时间值和最大时间值的时间间隔或范围。时间值可以是绝对时间或离当前时间(例如,第一计算设备102所接收的时间)的偏移量。在附录A中示出用于指定时间间隔的示例手段。Referring next to FIG. 3 , an exemplary flowchart illustrates comparing the requested time interval with the activation time 210 of the schedule 208 and a previously suggested delivery time 216 to determine a delivery time to make a recommendation to the server. At 302 , a computing device, such as first computing device 102 , receives a requested time value from another computing device, such as a server or second computing device 104 . In some embodiments, the time value includes a time interval or range specifying a minimum time value and a maximum time value. The time value may be an absolute time or an offset from the current time (eg, the time received by the first computing device 102). An example means for specifying time intervals is shown in Appendix A.

在接收到所请求的时间值之后,第一计算设备102在304处标识与时间表208相关联的一个或多个即将到来的激活时间210。例如,第一计算设备102标识与消耗通信资源(或要被优化的其他资源)的时间表208相关联的激活时间210。第一计算设备102随后标识与无条件时间表208相关联的那些激活时间210。如果没有这样的时间表208可用,则第一计算设备102标识与条件时间表208相关联的那些激活时间210。After receiving the requested time value, the first computing device 102 identifies one or more upcoming activation times 210 associated with the schedule 208 at 304 . For example, first computing device 102 identifies activation time 210 associated with schedule 208 for consuming communication resources (or other resources to be optimized). The first computing device 102 then identifies those activation times 210 that are associated with the unconditional schedule 208 . If no such schedule 208 is available, first computing device 102 identifies those activation times 210 that are associated with conditional schedule 208 .

同样在304,第一计算设备102标识一个或多个先前确定的传递时间216。例如,第一计算设备102访问存储在存储器区域206中的先前确定的传递时间216。在306处,将所请求的时间值与所标识的激活时间210以及先前确定的传递时间216进行比较。同样在306,基于该比较,第一计算设备102确定传递时间。在所请求的时间值是间隔的示例中,所确定的传递时间表示该间隔内的时间。另选地或另外地,所确定的传递时间表示与即将到来的激活时间210中的一个或者与先前确定的传递时间216中的一个相对应的时间。在这些实施例中,因为在通信资源的电源开启的同时多个服务器将使用该通信资源,所以优化了通信资源的使用。Also at 304 , the first computing device 102 identifies one or more previously determined delivery times 216 . For example, first computing device 102 accesses previously determined delivery time 216 stored in memory area 206 . At 306 , the requested time value is compared to the identified activation time 210 and the previously determined delivery time 216 . Also at 306, based on the comparison, the first computing device 102 determines a delivery time. In the example where the requested time value is an interval, the determined delivery time represents time within the interval. Alternatively or additionally, the determined delivery time represents a time corresponding to one of the upcoming activation times 210 or to one of the previously determined delivery times 216 . In these embodiments, the use of the communication resource is optimized because multiple servers will use the communication resource while the communication resource is powered on.

在308,将所确定的传递时间提供给服务器。服务器在所提供的传递时间将数据发送给第一计算设备102。在某些实施例中,所请求的时间值是从在第一计算设备102上执行的但与服务器相关联的应用程序接收的。在这些实施例中,将所确定的传递时间提供给该应用程序。该应用程序将所确定的传递时间传达给服务器,并且服务器在所确定的传递时间将数据发送给第一计算设备102。At 308, the determined delivery time is provided to the server. The server sends the data to the first computing device 102 at the provided delivery time. In some embodiments, the requested time value is received from an application program executing on the first computing device 102 but associated with the server. In these embodiments, the determined delivery time is provided to the application. The application communicates the determined delivery time to the server, and the server sends the data to the first computing device 102 at the determined delivery time.

在多个服务器企图向第一计算设备102发送数据的实施例中,该多个服务器中的每一个具有与其相关联的优先级。第一计算设备102在确定传递时间时使用所分配的优先级。例如,如果通信资源在特定时间间隔可用,则提出传递时间请求的具有高优先级的服务器将在特定时间间隔的较早时刻接收到所确定的传递时间。具有较低优先级的服务器将在特定时间间隔的较晚时刻接收到所确定的传递时间。In embodiments where multiple servers attempt to send data to first computing device 102, each of the multiple servers has a priority associated therewith. The assigned priority is used by the first computing device 102 in determining the delivery time. For example, if a communication resource is available at a certain time interval, a server with a high priority requesting a delivery time will receive the determined delivery time at an earlier moment in the certain time interval. Servers with lower priority will receive the determined delivery time later in the specified time interval.

接着参考图4,示例性流程图示出确定数据传递时间并基于处理延时212和网络等待时间214来调整所确定的传递时间。在402处,访问由服务器或其他第二计算设备104请求的时间间隔(例如,由第一计算设备102访问)。所请求的时间间隔表示期间服务器想要向第一计算设备102发送数据的时间范围。在404处,搜索激活时间210(在某些实施例中,连同先前确定的传递时间216)来标识在所请求的时间间隔内的激活时间210的子集。在406处,基于所标识的激活时间210的子集来确定传递时间以协调通信资源的消耗。在408处,基于与处理延时212和/或网络等待时间214相对应的偏移量来调整所确定的传递时间。在410处,将所确定的传递时间发布给服务器。Referring next to FIG. 4 , an exemplary flowchart illustrates determining a data delivery time and adjusting the determined delivery time based on processing delay 212 and network latency 214 . At 402, a time interval requested by a server or other second computing device 104 (eg, by the first computing device 102) is accessed. The requested time interval represents a time range during which the server wants to send data to the first computing device 102 . At 404, the activation times 210 are searched (in some embodiments, along with the previously determined delivery times 216) to identify a subset of the activation times 210 within the requested time interval. At 406, a delivery time is determined based on the identified subset of activation times 210 to coordinate consumption of communication resources. At 408 , the determined delivery time is adjusted based on an offset corresponding to processing delay 212 and/or network latency 214 . At 410, the determined delivery time is published to the server.

在附录B中描述了用于确定传递时间的示例性指令或操作。Exemplary instructions or operations for determining delivery times are described in Appendix B.

接着参考图5,示例性流程图示出基于与移动计算设备602相关联的通信资源的已知电源开启时间来确定数据传递时间。在图5的示例中,接口组件218、高速缓存组件220、提示组件222或发布组件224在移动计算设备602上执行。在502处,接口组件218接收或访问所请求的时间间隔或值。该时间间隔与从服务器到移动计算设备602的预期数据传输相关联。在504处,高速缓存组件220标识移动计算设备602上的通信资源的一个或多个预期电源开启时间。该预期电源开启时间表示,例如在移动计算设备602上执行的消耗通信资源的时间表208的即将到来的激活时间210或先前确定的传递时间216。Referring next to FIG. 5 , an exemplary flowchart illustrates determining a data transfer time based on known power-on times of communication resources associated with the mobile computing device 602 . In the example of FIG. 5 , interface component 218 , cache component 220 , prompt component 222 , or publish component 224 execute on mobile computing device 602 . At 502, the interface component 218 receives or accesses the requested time interval or value. This time interval is associated with expected data transfers from the server to the mobile computing device 602 . At 504 , cache component 220 identifies one or more expected power-on times for communication resources on mobile computing device 602 . The expected power-on time represents, for example, an upcoming activation time 210 or a previously determined delivery time 216 of a schedule 208 executing on the mobile computing device 602 that consumes communication resources.

在506处,提示组件222基于由接口组件218接收的所请求的时间间隔与由高速缓存组件220标识的预期电源开启时间的比较来确定传递时间。例如,提示组件222将传递时间设为与预期电源开启时间中的一个相对应的时间间隔的起点。在某些实施例中,接口组件218所接收的请求包括表示数据传输的预期大小的有效负载值。在这些实施例中,提示组件222基于所接收的有效负载值来确定传递时间以管理移动计算设备602上的带宽(例如,为了避免使通信资源发生颠簸)。例如,带有小有效负载的数据包被排定为首先发送的优先级,接着是带有大有效负载的数据包。作为有效负载大小的替代或除了有效负载大小之外,对于遍历某些接口的有效负载赋予优先级并按照优先级降序来发送。At 506 , the prompt component 222 determines a delivery time based on a comparison of the requested time interval received by the interface component 218 and the expected power-on time identified by the cache component 220 . For example, the prompt component 222 sets the delivery time as the start of a time interval corresponding to one of the expected power-on times. In some embodiments, the request received by the interface component 218 includes a payload value representing the expected size of the data transfer. In these embodiments, prompting component 222 determines delivery times based on received payload values to manage bandwidth on mobile computing device 602 (eg, to avoid thrashing communication resources). For example, packets with small payloads are prioritized to be sent first, followed by packets with large payloads. Instead of or in addition to payload size, payloads traversing certain interfaces are given priority and sent in descending order of priority.

在508处,发布组件224将由提示组件222确定的传递时间提供给服务器。服务器在所提供的传递时间将数据发送给移动计算设备602。At 508, publishing component 224 provides the delivery time determined by prompting component 222 to the server. The server sends the data to the mobile computing device 602 at the provided delivery time.

在某些实施例中,移动计算设备602具有多个蜂窝无线电。在这些实施例中,接口组件218所接收的请求包括该多个蜂窝无线电中的一个的标识。在其他实施例中,移动计算设备602将请求分配给该蜂窝无线电中的一个。在另一些实施例中,跟踪时间表208中具有持久连接的每一个时间表所使用的无线电。所标识的蜂窝无线电变为提示组件222用来确定传递时间的另一变量。在这些实施例中,存储在存储器区域206中的先前确定的传递时间216中的每一个包括相关联的蜂窝无线电的标识。提示组件222在确定传递时间时对具有相同所标识的蜂窝无线电的时间表208排定优先级。In some embodiments, mobile computing device 602 has multiple cellular radios. In these embodiments, the request received by interface component 218 includes an identification of one of the plurality of cellular radios. In other embodiments, the mobile computing device 602 assigns the request to one of the cellular radios. In other embodiments, the radios used by each of the schedules 208 that have a persistent connection are tracked. The identified cellular radio becomes another variable used by prompting component 222 to determine delivery time. In these embodiments, each of the previously determined delivery times 216 stored in the memory area 206 includes an identification of the associated cellular radio. The prompt component 222 prioritizes the schedule 208 with the same identified cellular radio when determining delivery times.

接着参考图6,示例性序列图示出从两个服务器到移动计算设备602的数据传递的调度。在移动设备上执行的两个应用程序604、606请求到移动计算设备602的数据传递的提示。在从调度器108接收到提示之后,应用程序604、606将提示提供给相关联的服务器610、612。服务器610、612随后试图在所提示的时间将数据发送给移动计算设备602。Referring next to FIG. 6 , an exemplary sequence diagram illustrates the scheduling of data delivery from two servers to the mobile computing device 602 . Two applications 604 , 606 executing on the mobile device request prompts for data transfer to the mobile computing device 602 . After receiving the hint from the scheduler 108, the application 604, 606 provides the hint to the associated server 610, 612. The servers 610, 612 then attempt to send the data to the mobile computing device 602 at the prompted time.

在图6的示例中,已知电源开启时间(例如,即将到来的激活时间210或先前确定的传递时间216)的列表被称为ServerSendTime(服务器发送时间)列表。在调度器108或其他服务的启动期间创建ServerSendTime列表并且当调度器108结束处理时将其清除。ServerSendTime列表作为高速缓存来对待从而使得如果高速缓存条目落在所请求的时间间隔之间,则在确定另一传递时间时将该高速缓存条目认为是候选。在某些实施例中,高速缓存被表示为带有<key,value>=<ServerSendTime,frequency>(<关键字,值>=<服务器发送时间,频率>)的散列映射。<ServerSendTime,frequency>的映射按照关键字(ServerSendTime)来排序。在该示例中,映射加快了最接近结束时间的ServerSendTime的标识。In the example of FIG. 6 , the list of known power-on times (eg, upcoming activation times 210 or previously determined delivery times 216 ) is referred to as the ServerSendTime (server send time) list. The ServerSendTime list is created during startup of the scheduler 108 or other service and cleared when the scheduler 108 finishes processing. The ServerSendTime list is treated as a cache such that if a cache entry falls between the requested time intervals, that cache entry is considered a candidate when determining another delivery time. In some embodiments, the cache is represented as a hash map with <key, value>=<ServerSendTime, frequency> (<key, value>=<server send time, frequency>). The mapping of <ServerSendTime, frequency> is sorted by key (ServerSendTime). In this example, the mapping expedites the identification of the ServerSendTime closest to the end time.

在某些实施例中,时间表208中的每一个的激活时间210被存储为按激活时间210(例如,升序)排序的高速缓存。高速缓存存储所有活动时间表208的激活时间210。用每一个从服务器接收的要传递数据的请求来创建或更新高速缓存。在某些实施例中,调度器108简单地提供或发布该高速缓存以使服务器能够选择合适的传递时间。In some embodiments, the activation time 210 for each of the schedules 208 is stored as a cache sorted by activation time 210 (eg, in ascending order). The cache stores the activation times 210 of all active schedules 208 . The cache is created or updated with each request received from the server to deliver data. In some embodiments, the scheduler 108 simply provides or publishes this cache to enable the server to choose an appropriate delivery time.

在图6的示例中,在接收到所请求的时间间隔之后,调度器108在高速缓存中迭代并删除已经到期(例如,具有早于当前时间的激活时间210)的所有条目。调度器108在时间表208中迭代来标识使用移动计算设备602上的通信资源的活动且循环的时间表208的子集。计算时间表208子集中每一时间表208的下一个激活时间210。从时间表208的该子集中,调度器108标识落在服务器所请求的时间间隔内的激活时间210。调度器108对与具有高执行确定性的时间表208相关联的激活时间210赋予偏好。例如,带有无条件执行的时间表208具有高执行确定性。调度器108基于所标识的时间表208子集来更新激活时间210的高速缓存。In the example of FIG. 6, after receiving the requested time interval, the scheduler 108 iterates through the cache and deletes all entries that have expired (eg, have an activation time 210 earlier than the current time). The scheduler 108 iterates through the schedule 208 to identify active and recurring subsets of the schedule 208 that use the communication resources on the mobile computing device 602 . A next activation time 210 for each schedule 208 in the subset of schedules 208 is calculated. From this subset of schedule 208, scheduler 108 identifies activation times 210 that fall within the time interval requested by the server. The scheduler 108 assigns a preference to activation times 210 associated with schedules 208 with high execution certainty. For example, schedule 208 with unconditional execution has high execution certainty. The scheduler 108 updates the cache of activation times 210 based on the identified subset of schedules 208 .

调度器108基于激活时间210的高速缓存和ServerSendTime列表来确定传递时间或其他提示时间。如果激活时间210中的一个落在所请求的时间间隔内,则将该激活时间210添加到ServerSendTime列表,并且将频率设为一。如果在激活时间210的高速缓存中没有满足的激活时间210,则调度器108扫描ServerSendTime列表。如果ServerSendTime中的一个落在所请求的时间间隔内,则将该ServerSendTime提供给提出请求的服务器并且在列表中递增该ServerSendTime的频率。如果一个以上的ServerSendTime落在间隔内,则选择具有最高频率的ServerSendTime。如果没有一个ServerSendTime落在所请求的时间间隔内,则选择最接近的ServerSendTime(例如,基于定义的容限或增量区域)。将传递时间设为最接近的ServerSendTime的起点。如果没有ServerSendTime落在时间间隔内,则将所请求的时间间隔的结束时间设为ServerSendTime。随后将结束时间输入到ServerSendTime列表中,其频率为一(1)。The scheduler 108 determines delivery times or other hint times based on the cache of activation times 210 and the ServerSendTime list. If one of the activation times 210 falls within the requested time interval, that activation time 210 is added to the ServerSendTime list and the frequency is set to one. If no active time 210 is satisfied in the cache of active times 210, the scheduler 108 scans the ServerSendTime list. If one of the ServerSendTimes falls within the requested time interval, that ServerSendTime is given to the requesting server and the frequency of that ServerSendTime is incremented in the list. If more than one ServerSendTime falls within the interval, the ServerSendTime with the highest frequency is chosen. If none of the ServerSendTimes falls within the requested time interval, the closest ServerSendTime is chosen (eg, based on a defined tolerance or delta region). Sets the delivery time to the closest ServerSendTime to the start. If no ServerSendTime falls within the interval, set the end time of the requested interval to ServerSendTime. The end time is then entered into the ServerSendTime list with a frequency of one (1).

虽然图6的示例示出示例性的传递时间确定,但其他选择方法也在本发明各方面的范围之内。此外,选择方法可以动态地改变。While the example of FIG. 6 shows an exemplary delivery time determination, other selection methods are within the scope of aspects of the invention. Furthermore, the selection method can be changed dynamically.

在某些实施例中,最小时间值是当前时间而最大时间值表示最大心跳间隔(例如,移动计算设备602和服务器在不传输数据但仍然保持连接的情况下所能持续的最长时间段)。In some embodiments, the minimum time value is the current time and the maximum time value represents the maximum heartbeat interval (e.g., the longest period of time that the mobile computing device 602 and the server can last without transmitting data but still remain connected) .

在一实施例(未示出)中,服务器是集结来自一个或多个服务器的数据的代理服务器。代理服务器在将数据发送给移动计算设备602之前集结数据。代理服务器向数据包(或向服务器)分配优先级。优先级表示将该数据包发送给移动计算设备602的紧急度(例如,与延时该包的容忍度相对)。代理服务器用在发送数据之前等待的意愿(例如,按分钟)来量化优先级。在移动计算设备602上,应用程序提供最小时间(例如,当前时间)以及和发送该数据包的服务器愿意延迟数据传递的时间段相等的最大时间。当移动计算设备602应用程序将心跳查验发送给服务器时,它包括所确定的传递时间或对于服务器发送数据的最优将来时间的提示。In one embodiment (not shown), the server is a proxy server that aggregates data from one or more servers. The proxy server aggregates the data before sending the data to the mobile computing device 602 . Proxy servers assign priorities to packets (or to servers). The priority level represents the urgency with which to send the data packet to mobile computing device 602 (eg, as opposed to tolerance for delaying the packet). The proxy server quantifies priority in terms of willingness to wait (eg, in minutes) before sending data. On mobile computing device 602, the application provides a minimum time (eg, the current time) and a maximum time equal to the period of time that the server sending the data packet is willing to delay data delivery. When the mobile computing device 602 application sends the heartbeat ping to the server, it includes the determined delivery time or a hint for the optimal future time for the server to send the data.

ServerSendTime表示服务器发送数据的开始时间。在已知ServerSendTime之后的某时间段资源可用(例如,蜂窝无线电尾)的实施例中,调度器108考虑该时间段。例如,基于已知蜂窝无线电尾来设置容限或增量区域。ServerSendTime indicates the start time for the server to send data. In embodiments where resources are known to be available for a certain period of time after ServerSendTime (eg, a cellular radio tail), the scheduler 108 takes that period of time into account. For example, a margin or delta region is set based on known cellular radio tails.

示例example

在一示例中,邮件服务器要求提示并提供12:00和12:20作为最小和最大时间。调度器108具有带有在12:20的10分钟间隔时间段时间表的活动连接的活动时间表。调度器108标识活动时间表,调整传递时间以考虑网络等待时间214和/或处理延时212(例如,三十秒),确定传递时间为12:19:30,并且将所确定的传递时间提供给服务器。In one example, the mail server asks for a prompt and provides 12:00 and 12:20 as minimum and maximum times. The scheduler 108 has an active schedule with active connections scheduled for 10 minute intervals at 12:20. Scheduler 108 identifies the active schedule, adjusts the delivery time to account for network latency 214 and/or processing delay 212 (e.g., thirty seconds), determines the delivery time to be 12:19:30, and provides the determined delivery time to the server.

在上述示例的变型中,没有激活时间210落在所请求的时间间隔内。在该示例中,调度器108将12:20的最大时间设为所确定的传递时间(例如,ServerSendTime)。In a variation on the above example, no activation time 210 falls within the requested time interval. In this example, scheduler 108 sets a maximum time of 12:20 as the determined delivery time (eg, ServerSendTime).

在上述示例的延续中,另一服务器提供了12:15和12:30作为最小和最大时间。ServerSendTime等于12:20,落在所请求的时间间隔内。在调整了网络等待时间214之后,调度器108提供12:19:30作为所确定的传递时间。In a continuation of the above example, another server provides 12:15 and 12:30 as minimum and maximum times. ServerSendTime equals 12:20, which falls within the requested interval. After adjusting the network latency 214, the scheduler 108 provides 12:19:30 as the determined delivery time.

示例性操作环境Exemplary Operating Environment

作为示例而非限制,计算机可读介质包括计算机存储介质和通信介质。计算机存储介质存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息。通信介质一般以诸如载波或其它传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其它数据,并且包括任何信息传递介质。以上的任一种的组合也包括在计算机可读介质的范围之内。By way of example, and not limitation, computer-readable media comprise computer storage media and communication media. Computer storage media store information such as computer readable instructions, data structures, program modules or other data. Communication media typically embodies computer readable instructions, data structures, program modules or other data in a modulated data signal such as a carrier wave or other transport mechanism and includes any information delivery media. Combinations of any of the above are also included within the scope of computer readable media.

尽管结合示例性计算系统环境进行了描述,但本发明的各实施例可用于众多其它通用或专用计算系统环境或配置。适用于本发明各方面的公知的计算系统、环境和/或配置的示例包括,但不限于:移动计算设备、个人计算机、服务器计算机、手持式或膝上型设备、多处理器系统、游戏控制台、基于微处理器的系统、机顶盒、可编程消费电子产品、移动电话、网络PC、小型机、大型计算机、包括上述系统或设备中的任一个的分布式计算机环境等等。Although described in connection with an exemplary computing system environment, embodiments of the invention are applicable to numerous other general purpose or special purpose computing system environments or configurations. Examples of well-known computing systems, environments, and/or configurations suitable for use with aspects of the invention include, but are not limited to: mobile computing devices, personal computers, server computers, handheld or laptop devices, multiprocessor systems, game consoles desktops, microprocessor-based systems, set-top boxes, programmable consumer electronics, mobile phones, network PCs, minicomputers, mainframe computers, distributed computing environments including any of the foregoing systems or devices, and the like.

可以在由一台或多台计算机或其他设备执行的诸如程序模块之类的计算机可执行的指令的一般上下文中来描述本发明的各实施例。计算机可执行指令可以被组织成一个或多个计算机可执行组件或模块。一般而言,程序模块包括,但不限于,执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件,以及数据结构。可以利用任何数量的这样的组件或模块及其组织来实现本发明的各方面。例如,本发明的各方面不仅限于附图中所示出并且在此处所描述的特定计算机可执行指令或特定组件或模块。本发明的其他实施例可以包括具有比此处所示出和描述的功能更多或更少功能的不同的计算机可执行指令或组件。Embodiments of the invention may be described in the general context of computer-executable instructions, such as program modules, being executed by one or more computers or other devices. Computer-executable instructions may be organized into one or more computer-executable components or modules. Generally, program modules include, but are not limited to, routines, programs, objects, components, and data structures that perform particular tasks or implement particular abstract data types. Aspects of the invention may be implemented using any number and organization of such components or modules. For example, aspects of the invention are not limited to the specific computer-executable instructions or the specific components or modules shown in the figures and described herein. Other embodiments of the invention may include different computer-executable instructions or components having more or less functionality than shown and described herein.

此处所示和所描述的各实施例以及此处未具体描述的、但落在本发明的各方面的范围内的各实施例构成用于基于所请求的时间间隔内的无线电资源的已知电源开启时间来确定传递时间的示例性手段,以及用于基于处理延时212和等待时间来调整传递时间的示例性手段。Embodiments shown and described herein, as well as embodiments not specifically described herein, but falling within the scope of aspects of the invention, constitute a method for determining the radio resources based on the known radio resources within the requested time interval. Exemplary means for determining delivery time based on power-on time, and example means for adjusting delivery time based on processing delay 212 and latency.

此处所示出和描述的本发明的各实施例中的操作的执行或实现的顺序不是必需的,除非另外指定。即,除非另外指定,否则操作可以按任何顺序执行,且本发明的各实施例可以包括比此处所公开的操作更多或更少的操作。例如,构想了在一个操作之前、同时或之后执行另一个操作是在本发明的各方面的范围之内的。No order of execution or implementation is required for the operations in the various embodiments of the invention shown and described herein, unless otherwise specified. That is, unless otherwise specified, the operations may be performed in any order, and embodiments of the invention may include more or fewer operations than disclosed herein. For example, it is contemplated that performing one operation before, concurrently with, or after another operation is within the scope of aspects of the invention.

当介绍本发明的各方面的元素或其实施例时,冠词“一”、“一个”、“该”、“所述”旨在表示有元素中的一个或多个。术语“包括”、“包含”以及“具有”旨在是包含性的,并意味着除所列出的元素以外还可以有额外的元素。When introducing elements of aspects of the invention or embodiments thereof, the articles "a", "an", "the", "said" are intended to mean that there are one or more of the elements. The terms "comprising", "comprising" and "having" are intended to be inclusive and mean that there may be additional elements other than the listed elements.

已经详细地描述了本发明的各方面,显然,在不偏离所附权利要求书所定义的本发明的各方面的范围的情况下,可以进行各种修改和变化。在不偏离本发明的各方面的范围的情况下,可以对上面的构造、产品以及方法作出各种更改,上面的描述中所包含的和各个附图中所示出的所有主题应该解释为说明性的,而不是限制性的。Having described the aspects of the invention in detail, it will be apparent that various modifications and changes can be made without departing from the scope of the aspects of the invention as defined in the appended claims. Various changes could be made in the above constructions, products and methods without departing from the scope of the aspects of the invention, and all matter contained in the above description and shown in the various drawings should be construed as illustrative sexual, not restrictive.

附录AAppendix A

以下所示的应用程序编程接口(API)使得应用程序能够提供最小时间和最大时间间隔。在第一计算设备上执行的调度器返回落在两个间隔之间的提示(例如,用统一时间代码格式)。API签名如下所示。The Application Programming Interface (API) shown below enables applications to provide minimum time and maximum time intervals. A scheduler executing on the first computing device returns a reminder (eg, in a uniform timecode format) that falls between two intervals. The API signature is as follows.

//先决条件:-//prerequisites:-

//   startTime<=endTime(开始时间<=结束时间)// startTime<=endTime(start time<=end time)

//   CurrentTime<=endTime(当前时间<=结束时间)// CurrentTime<=endTime(current time<=end time)

//后置条件:-// Postconditions: -

//   startTime<=serverSendTime and serverSendTime<=endTime(开始时间<=服务器发送时间并且服务器发送时间<=结束时间)// startTime<=serverSendTime and serverSendTime<=endTime(start time<=server send time and server send time<=end time)

HRESULT TaskSchedulerGetBestNetworkTimeInRange(__in const FILETIME*startTime,__in const FILETIME*endTime,__out FILETIME*serverSendTime);HRESULT TaskSchedulerGetBestNetworkTimeInRange(__in const FILETIME*startTime, __in const FILETIME*endTime, __out FILETIME*serverSendTime);

该API获得提示时间以便服务器在startTime(开始时间)和endTime(结束时间)之间将数据发送给设备。This API gets the prompt time for the server to send data to the device between startTime (start time) and endTime (end time).

参数parameter

    startTimestartTime

        [输入]间隔的开始时间。[input] The start time of the interval.

    endTimeendTime

        [输入]间隔的结束时间。[input] The end time of the interval.

    serverSendTimeserverSendTime

        [输出]服务器需要将数据发送给设备的提示时间。[Output] The prompt time when the server needs to send data to the device.

返回值return value

  S_OKS_OK

  如果成功则返回的值。The value to return if successful.

  E_INVALIDARGE_INVALIDARG

  如果任何先决条件失败或者对于无效自变量返回的值。The value to return if any precondition fails or for an invalid argument.

  E_FAILE_FAIL

如果不成功则返回的值。The value to return if unsuccessful.

以下示出用于取消先前由TaskSchedulerGetBestNetworkTimeInRange()返回的提示的示例性API。该API由最终未使用提示的任何请求者使用。至少因为在发布时所提示的时间具有较高的权重,所以该API提高了本发明的各方面的准确性和有效性。有了该API函数调用,调度器紧密地跟踪提示时间值的使用并且改进在稍后分发提示时间时调度器内部使用的试探法。在以下示例中,使用TaskSchedulerCancelBestNetworkTime(任务调度器取消最佳网络时间)来取消现有提示的调用者(帐户)和使用TaskSchedulerGetBestNetworkTimeInRange(任务调度器获得范围内最佳网络时间)来获得提示的调用者(帐户)是同一个。An exemplary API for canceling a hint previously returned by TaskSchedulerGetBestNetworkTimeInRange() is shown below. This API is used by any requester who ends up not using hints. This API improves the accuracy and effectiveness of aspects of the present invention at least because the time suggested at the time of publication has a higher weight. With this API function call, the scheduler closely tracks the use of hint time values and refines the heuristics used internally by the scheduler when distributing hint times at a later time. In the following example, the caller (account) who cancels an existing prompt using TaskSchedulerCancelBestNetworkTime (TaskSchedulerCancelBestNetworkTime) and the caller (account) who gets a prompt using TaskSchedulerGetBestNetworkTimeInRange ( account) are the same.

HRESULT TaskSchedulerCancelBestNetworkTime(__in const FILETIME*serverSendTime);HRESULT TaskSchedulerCancelBestNetworkTime(__in const FILETIME*serverSendTime);

参数parameter

    serverSendTimeserverSendTime

      [输入]先前由TaskSchedulerGetBestNetworkTimeInRange返回的提示时间。[in] The prompt time previously returned by TaskSchedulerGetBestNetworkTimeInRange.

返回值return value

    S_OKS_OK

    提示时间的发布已被跟踪。Publishing of reminder times has been tracked.

    S_FALSES_FALSE

    提示时间未被识别(值已经“到期”或者值不是由TaskSchedulerGetBestNetworkTimeInRange先前返回的)。Prompt time not recognized (value has "expired" or value was not previously returned by TaskSchedulerGetBestNetworkTimeInRange).

    E_*E_*

    在处理请求时遭遇其他失败。Encountered another failure while processing the request.

附录BAppendix B

以下示出了用于确定传递时间的示例性指令或操作。Exemplary instructions or operations for determining delivery times are shown below.

在服务启动期间创建ServerSendTime列表并且当服务停止时将其清除。该列表作为高速缓存来对待从而使得如果高速缓存条目落在间隔之间,则该高速缓存条目可以被认为是ServerSendTime的候选而不必在所有时间表中迭代并再次计算ServerSendTime。高速缓存可以内部地被表示为带有<key,value>=<ServerSendTime,mapAcctIdtoFreq>(<关键字,值>=<服务器发送时间,帐户Id到频率的映射>)的散列映射,其中mapAcctIdtoFreq是所有者帐户id到频率的散列映射,并且可以被定义为:The ServerSendTime list is created during service startup and cleared when the service stops. The list is treated as a cache so that if a cache entry falls between intervals, that cache entry can be considered a candidate for ServerSendTime without having to iterate through all timetables and calculate ServerSendTime again. A cache can be represented internally as a hash map with <key, value>=<ServerSendTime, mapAcctIdtoFreq> (<key, value>=<server send time, mapping of accountId to frequency>), where mapAcctIdtoFreq is A hash map of owner account ids to frequencies, and can be defined as:

map<ACCTID,DWORD>mapAcctIdtoFreq;map<ACCTID, DWORD> mapAcctIdtoFreq;

<ServerSendTime mapAcctIdtoFreq>的映射按照关键字(ServerSendTime)来排序。The map of <ServerSendTime mapAcctIdtoFreq> is sorted by key (ServerSendTime).

还维护按NRT(下一运行时)来排序的<NRT>列表。该列表在每次调用API时创建。该列表存储所有活动时间表的NRT。A <NRT> list sorted by NRT (Next Runtime) is also maintained. The list is created every time the API is called. This list stores the NRTs of all active schedules.

接着描述用于确定传递时间的示例性算法。An exemplary algorithm for determining delivery time is described next.

1.在高速缓存中迭代并删除已经到期的所有条目(例如,NRT<CurrentTime(下一运行时<当前时间)的那些条目)。1. Iterate through the cache and delete all entries that have expired (eg, those for which NRT < CurrentTime (Next Runtime < Current Time)).

2.如果starttime==endTime(开始时间==结束时间),如果该值不存在高速缓存<ServerSendTime,mapAcctIdtoFreq>中,则将该值添加到该高速缓存,否则如果ServerSendTime已经存在于高速缓存中,则添加/递增mapAcctIdtoFreq中的频率。2. If starttime==endTime (start time==end time), if this value does not exist in cache <ServerSendTime, mapAcctIdtoFreq>, then add this value to this cache, otherwise if ServerSendTime already exists in cache, Then add/increment the frequency in mapAcctIdtoFreq.

3.如果在注册表中定义了ShrinkFactor(收缩因子),则基于收缩因子来缩减(starttime-endTime)间隔。将Starttime推送为newStartTime(新的开始时间)并且间隔变为(newStartTime-endTime)。3. If a ShrinkFactor (shrink factor) is defined in the registry, the (starttime-endTime) interval is reduced based on the shrink factor. Push Starttime to newStartTime (new start time) and interval becomes (newStartTime-endTime).

如果未定义,则newStartTime=starttime。If undefined, newStartTime = starttime.

这么做是为了使得hinttime(提示时间)总是接近结束时间。This is done so that the hinttime is always close to the end time.

4.在组集合中迭代。4. Iterate over the group collection.

5.在每一组中的所有时间表中迭代。5. Iterate over all schedules in each group.

6.只考虑满足以下条件的时间表。6. Only schedules that meet the following conditions are considered.

a)Recurrence!=BOOTUP(循环!=引导)a) Recurrence! = BOOTUP(loop != bootup)

b)Network Connectivity=TRUE(网络连接=真)(不带有网络连接的时间表不被认为是SendServerTime,因为它们也许能或也许不能帮助缩减无线电自旋)b) Network Connectivity = TRUE (Schedules without Network Connectivity are not considered SendServerTime as they may or may not help reduce radio spin)

c)如果IsCellularPreferred=1(蜂窝被优选=1),则只考虑带有CELLULAR=ON(蜂窝=开启)的时间表。如果IsCellularPreferred=0(蜂窝被优选=0),则不考虑CELLULAR(蜂窝)条件。c) If IsCellularPreferred = 1, only consider schedules with CELLULAR = ON. If IsCellularPreferred = 0 (cellular preferred = 0), then the CELLULAR condition is not considered.

d)Active=TRUE(活动=真)。所考虑的时间表包括当前活动的并且在给定newStartTime-endtime且满足MaxRuncounts(最大运行计数)条件时将来将保持活动的时间表。d) Active=TRUE (active=true). The schedules considered include those that are currently active and will remain active in the future given the newStartTime-endtime and the MaxRuncounts (maximum run count) condition is met.

7.如接下来所述地从在步骤6中创建的列表中创建ServerSendTime。7. Create a ServerSendTime from the list created in step 6 as described next.

对于列表(例如,在步骤6中创建的)中选择的每一个时间表,计算第N个运行时。使用公式来计算第N个运行时。For each schedule selected in the list (e.g., created in step 6), calculate the Nth runtime. Use the formula to calculate the Nth runtime.

对于循环平均For cycle average

NRT(N)=NRT(N-1)+CurrentIntervalDuration(当前间隔持续时间)NRT(N)=NRT(N-1)+CurrentIntervalDuration (current interval duration)

对于循环间隔for cycle interval

NRT(N)=NRT(N-1)+CurrentIntervalDuration(当前间隔持续时间)NRT(N)=NRT(N-1)+CurrentIntervalDuration (current interval duration)

其中NRT(0)=组活动时间表的下一运行时。where NRT(0) = the next runtime of the group activity schedule.

只考虑属于以下两种类别的时间表。Only schedules that fall into the following two categories are considered.

a)无条件且是组中仅有时间表的时间表a) Unconditional and is the only timetable in the group

b)无条件时间表且组中的所有其他时间表也都无条件。b) An unconditional schedule and all other schedules in the group are also unconditional.

如果组中存在至少一个带有某些条件的时间表,则不将该组考虑为ServerSendTime。If at least one schedule with certain conditions exists in the group, the group is not considered as ServerSendTime.

8.这得到<NRT>列表和<ServerSendTimes,mapAcctIdtoFreq>的高速缓存。接着,选择间隔<newStartTime,endTime>中的“最佳”提示时间。基于注册表设置IsPreferredCache(高速缓存被优选),至少两种排列是可能的8. This gets a list of <NRT>s and a cache of <ServerSendTimes, mapAcctIdtoFreq>. Next, the "best" reminder time in the interval <newStartTime, endTime> is selected. Based on the registry setting IsPreferredCache (cache is preferred), at least two permutations are possible

a)如果IsPreferredCache=1(高级缓存被优选=1),则首先在高a) If IsPreferredCache=1 (advanced cache is preferred=1), then first in the high

  速缓存<ServerSendTimes,mapAcctIdtoFreq>中查找Find in the cache <ServerSendTimes, mapAcctIdtoFreq>

  ServerSendTime。ServerSendTime.

  如果只找到一个ServerSendTime,则转到步骤10。If only one ServerSendTime is found, go to step 10.

  如果找到多个ServerSendTime值,则查找带有最大频率的If multiple ServerSendTime values are found, look for the one with the largest frequency

  ServerSendTime并转到步骤10。ServerSendTime and go to step 10.

  如果找到多个ServerSendTime值且两个或更多ServerSendTimeIf multiple ServerSendTime values are found and two or more ServerSendTime

  带有相同的最大值,则选择基于UseEndtime(使用结束时间)With the same maximum value, the selection is based on UseEndtime (use end time)

  注册表值的那个值。The value of the registry value.

  如果UseEndTime=1If UseEndTime=1

       则选择接近结束间隔的值The value close to the end interval is chosen

  如果UseEndTime=1If UseEndTime=1

       则选择接近开始间隔的值then select a value close to the start interval

  否则,如果在高速缓存中未找到,则查看列表<NRT>Else, if not found in cache, look in list <NRT>

b)如果IsPreferredCache=0(高速缓存被优选=0),则首先在列b) If IsPreferredCache = 0 (cache is preferred = 0), then first in column

  表<NRT>中查找ServerSendTime。如果找到ServerSendTime,Look up ServerSendTime in table <NRT>. If ServerSendTime is found,

  则转到步骤10。Then go to step 10.

  如果找到多个NRT,则选择基于UseEndTime注册表值的那个If multiple NRTs are found, the one based on the UseEndTime registry value is selected

  值value

  如果UseEndTime=1If UseEndTime=1

       则选择接近结束间隔的值The value close to the end interval is chosen

  如果UseEndTime=1If UseEndTime=1

       则选择接近开始间隔的值then select a value close to the start interval

  否则,如果在列表<NRT>中未找到,则查看高速缓存Else, if not found in list <NRT>, look in cache

  <ServerSendTime,mapAcctIdToFreq><ServerSendTime, mapAcctIdToFreq>

9.如果从步骤8未找到ServerSendTime,则9. If ServerSendTime is not found from step 8, then

如果ShrinkFactor=0If ShrinkFactor=0

        计算增量区域并在增量区域中从高速缓存Compute the delta region and read from the cache in the delta region

        <ServerSendTime,mapAcctIdtoFreq>查找<ServerSendTime, mapAcctIdtoFreq> lookup

        ServerSendTime。增量区域可以被认为是ServerSendTime. Incremental regions can be thought of as

        Starttime-增量到StarttimeStarttime - Increment to Starttime

        如果在增量区域中也没有找到ServerSendTime,则基于  If ServerSendTime is not found in the delta zone either, then based on

        UsedEndTime注册表值来赋值ServerSendTimeUse the UsedEndTime registry value to assign ServerSendTime

            如果UseEndTime=1If UseEndTime=1

                  则ServerSendTime=EndtimeThen ServerSendTime=Endtime

            如果UsedEndTime=0If UsedEndTime=0

        则ServerSendTime=StartTime  then ServerSendTime=StartTime

如果ShrinkFactor=1If ShrinkFactor=1

        因为starttime已经被推送为新的值,所以在这种情况下Because the starttime has been pushed as the new value, in this case

        无法检查增量区域。Unable to check delta region.

        将ServerSendTime赋值为EndTime。  Assign ServerSendTime as EndTime.

        ServerSendTime=EndtimeServerSendTime=Endtime

10.如果从步骤8找到了ServerSendTime,则10. If ServerSendTime is found from step 8, then

a.用NetworkLatencyAdjustment(网络等待时间调整)来调整a. Use NetworkLatencyAdjustment (network latency adjustment) to adjust

  ServerSendTimeServerSendTime

  ServerSendTime=ServerSendTime-NetworkLatencyAdjustmentServerSendTime=ServerSendTime-NetworkLatencyAdjustment

  检查是否新的ServerSendTime>StartTime。(未应用ShrinkFactorCheck if new ServerSendTime > StartTime. (No ShrinkFactor applied

  的StartTime)StartTime)

  如果否,则赋值ServersendTime=StartTime。(未应用ShrinkFactorIf not, assign ServersendTime=StartTime. (No ShrinkFactor applied

  的StartTime)StartTime)

11.现在计算ServerSendTime,在高速缓存<ServerSendTimes,mapAcctIdtoFreq>中查找该ServerSendTime值。11. Now calculate the ServerSendTime, look up the ServerSendTime value in the cache <ServerSendTimes, mapAcctIdtoFreq>.

a.如果在高速缓存中未找到,则添加该值以及所有者帐户id的值并且频率=1a. If not found in cache, add this value along with the value of the owner account id and frequency = 1

b.如果在高速缓存中找到,则查找帐户id。如果帐户id也存在,则递增频率。如果帐户Id不存在,则添加该帐户id并且频率=1。b. If found in the cache, look up the account id. Increment the frequency if the account id also exists. If AccountId does not exist, add the AccountId and Frequency = 1.

12.如果用某一时间值来调用TaskSchedulerCancelBestNetworkTime,则将在高速缓存<ServerSendTimes,mapAcctIdtoFreq>中搜索该值。如果在高速缓存中找到该值,则在相应的mapAcctIdtoFreq中搜索所有者帐户id。如果在mapAcctIdtoFreq中找到某一值,则递减频率。12. If TaskSchedulerCancelBestNetworkTime is called with a time value, the cache <ServerSendTimes, mapAcctIdtoFreq> will be searched for that value. If the value is found in the cache, the corresponding mapAcctIdtoFreq is searched for the owner account id. If a value is found in mapAcctIdtoFreq, decrement the frequency.

当频率=0时,将该条目从mapAcctIdtoFreq中移除。When frequency = 0, the entry is removed from mapAcctIdtoFreq.

同样,如果mapAcctIdtoFreq为空,则将ServerSendTime值从高速缓存<ServerSendTimes,mapAcctIdtoFreq>中移除。Likewise, if mapAcctIdtoFreq is empty, the ServerSendTime value is removed from the cache <ServerSendTimes, mapAcctIdtoFreq>.

注意:Notice:

1)NetworkLatencyAdjustment是使用网络等待时间和处理延时来确定的值。这是考虑网络等待时间的可配置注册表条目。每次返回ServerSendTime时,应该用NetworkLatencyAdjustment来设置偏移量。1) NetworkLatencyAdjustment is a value determined using network latency and processing delay. This is a configurable registry entry to account for network latency. Every time ServerSendTime is returned, the offset should be set with NetworkLatencyAdjustment.

2)如果设备的绝对时间改变,则需要基于该时间改变来调整高速缓存<ServerSendTime,frequency>中的时间值。这可以通过用时间改变事件的通知注册来完成。2) If the absolute time of the device changes, the time value in the cache <ServerSendTime, frequency> needs to be adjusted based on the time change. This can be done by registering with notifications for time-changed events.

3)可能存在用将来太过遥远的开始/结束时间(例如,间隔是10年以后)调用API的场景。在这种情况下,在API中执行边界检查(例如,间隔是在从当前时间起的24小时之内)而非计算NRT<N>。3) There may be a scenario where the API is called with a start/end time that is too far in the future (for example, the interval is 10 years later). In this case, bounds checks are performed in the API (for example, the interval is within 24 hours from the current time) instead of calculating NRT<N>.

4)包括StarttimePreferred/EndtimePreferred(开始时间优选/结束时间优选)和FrequencyPreferred(频率优选)的注册表值是可配置注册表条目。基于这些注册表值,可以动态地改变选择算法。4) Registry values including StarttimePreferred/EndtimePreferred (preferred start time/preferred end time) and FrequencyPreferred (preferred frequency) are configurable registry entries. Based on these registry values, the selection algorithm can be changed dynamically.

Claims (20)

1., for advising the system of the time sending the data to mobile computing device via network from server, described system comprises:
For accessing the device in the time interval for sending the data to described mobile computing device that described server is asked;
For searching for the device that the multiple activationary times be stored in memory area identify the subset of described multiple activationary time based on the asked time interval, described activationary time is associated with multiple timetable, the activation of wherein said multiple timetable consumes the radio resource on described mobile computing device, and described memory area also stores the side-play amount of stand-by period representing process time delay on described mobile computing device and be associated with described network;
For determining the device of passing time based on the subset of identified described multiple activationary time;
For adjusting the device of determined passing time based on the side-play amount be stored in described memory area; And
For issuing the device of the passing time through adjustment, wherein said server sends the data to described mobile computing device based on the issued passing time through adjustment.
2. the system as claimed in claim 1, is characterized in that, determined passing time comprises the side-play amount from current time.
3. the system as claimed in claim 1, is characterized in that, also comprise for from perform at described mobile computing device, the application program that is associated with server receives the device in the described time interval.
4. the system as claimed in claim 1, is characterized in that, described server sends the data to described mobile computing device at issued activationary time.
5. the system as claimed in claim 1, is characterized in that, the device of in described subset selected by the timetable also comprised for being had maximum execution possibility by mark.
6. the system as claimed in claim 1, it is characterized in that, described mobile computing device comprises multiple radio, described system comprises the device for receiving from described server the request in the described time interval, described request identifies one in described radio, and for searching for the device of stored multiple activationary times based on the asked time interval and the radio identified.
7. the system as claimed in claim 1, is characterized in that, also comprises:
For determining the device of described passing time based on the known power source opening time of the described radio resource in the asked time interval; And
For adjusting the device of described passing time based on described process time delay and stand-by period.
8., for the method to server suggestion passing time, comprising:
First computing equipment receives the time value of asking from the second computing equipment;
Identify the multiple activationary times be associated with multiple timetable, the activation of wherein said multiple timetable consumes the resource on described first computing equipment,
Identify one or more passing time previously determined;
Asked time value and the multiple activationary time identified and the described passing time previously determined identified are compared;
Relatively passing time is determined based on described; And
Determined passing time is supplied to described second computing equipment, and wherein said second computing equipment sends the data to described first computing equipment at provided determined passing time.
9. method as claimed in claim 8, is characterized in that, receives the time value of asking and comprises reception minimum time value and maximum time value.
10. method as claimed in claim 8, it is characterized in that, the application program that the time value that reception is asked comprises from being associated with described second computing equipment receives the time value of asking, the execution of application program described in described first computing equipment main memory, and comprise determined passing time is supplied to described application program to be sent to the second computing equipment.
11. methods as claimed in claim 8, it is characterized in that, described second computing equipment is one in multiple computing equipment, each in wherein said multiple computing equipment has priority associated with it, and determines that the priority that described passing time comprises based on being associated with described second computing equipment determines described passing time.
12. methods as claimed in claim 8, is characterized in that, identify described multiple activationary time and comprise the multiple activationary times identifying and be associated with unconditional timetable.
13. methods as claimed in claim 8, it is characterized in that, described time value comprises the time interval, and determines that described passing time comprises and determine in the described time interval and and the corresponding passing time of in the described passing time previously determined one.
14. methods as claimed in claim 8, it is characterized in that, described time value comprises the time interval, and determines that described passing time comprises and determine in the described time interval and and the corresponding passing time of in described multiple activationary time one.
15. methods as claimed in claim 8, it is characterized in that, described time value comprises the time interval, and determines that described passing time comprises the passing time determined in the described time interval, wherein a little earlier in described multiple activationary time one of determined passing time.
16. methods as claimed in claim 8, is characterized in that, also comprise:
Determine and the processing delay that described first computing equipment is associated; And
Determined passing time is adjusted based on determined processing delay.
17. 1 kinds of systems transmitted for the data managing the first computing equipment, described system comprises:
For receiving the interface module in the asked time interval, described the asked time interval is associated with transmitting from the second computing equipment to the anticipatory data of described first computing equipment;
For identifying the cache module of the multiple expection power-on time be associated with the communication resource on described first computing equipment,
For comparing based on the time interval received by described interface module and the multiple expection power-on time identified by described cache module the reminding module determining passing time; And
For the passing time determined by described reminding module being supplied to the release module of described second computing equipment, wherein said second computing equipment sends the data to described first computing equipment at provided passing time.
18. systems as claimed in claim 17, it is characterized in that, described interface module, cache module, reminding module and release module perform on described first computing equipment.
19. systems as claimed in claim 17, it is characterized in that, the described communication resource comprises cellular radio, and wherein said reminding module determines described passing time by the starting point of be set to by described passing time in the described expection power-on time of described cellular radio in the asked time interval.
20. systems as claimed in claim 17, it is characterized in that, described interface module also receives the pay(useful) load value of the expection size representing the transmission of described anticipatory data, and based on received pay(useful) load value, wherein said reminding module determines that described passing time is to manage the bandwidth on described first computing equipment.
CN200980138071.5A 2008-09-25 2009-09-24 Coordinating data delivery using time suggestions Active CN102165818B (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/237,797 US7966410B2 (en) 2008-09-25 2008-09-25 Coordinating data delivery using time suggestions
US12/237,797 2008-09-25
PCT/US2009/058166 WO2010036768A2 (en) 2008-09-25 2009-09-24 Coordinating data delivery using time suggestions

Publications (2)

Publication Number Publication Date
CN102165818A CN102165818A (en) 2011-08-24
CN102165818B true CN102165818B (en) 2014-12-31

Family

ID=42038744

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200980138071.5A Active CN102165818B (en) 2008-09-25 2009-09-24 Coordinating data delivery using time suggestions

Country Status (6)

Country Link
US (1) US7966410B2 (en)
EP (1) EP2340673B1 (en)
JP (1) JP5592380B2 (en)
KR (1) KR101617057B1 (en)
CN (1) CN102165818B (en)
WO (1) WO2010036768A2 (en)

Families Citing this family (74)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2003058879A1 (en) 2002-01-08 2003-07-17 Seven Networks, Inc. Secure transport for mobile communication network
US7917468B2 (en) 2005-08-01 2011-03-29 Seven Networks, Inc. Linking of personal information management data
US8468126B2 (en) 2005-08-01 2013-06-18 Seven Networks, Inc. Publishing data in an information community
US7853563B2 (en) 2005-08-01 2010-12-14 Seven Networks, Inc. Universal data aggregation
WO2006045102A2 (en) 2004-10-20 2006-04-27 Seven Networks, Inc. Method and apparatus for intercepting events in a communication system
US8010082B2 (en) * 2004-10-20 2011-08-30 Seven Networks, Inc. Flexible billing architecture
US7706781B2 (en) 2004-11-22 2010-04-27 Seven Networks International Oy Data security in a mobile e-mail service
FI117152B (en) 2004-12-03 2006-06-30 Seven Networks Internat Oy E-mail service provisioning method for mobile terminal, involves using domain part and further parameters to generate new parameter set in list of setting parameter sets, if provisioning of e-mail service is successful
US7752633B1 (en) 2005-03-14 2010-07-06 Seven Networks, Inc. Cross-platform event engine
US8438633B1 (en) 2005-04-21 2013-05-07 Seven Networks, Inc. Flexible real-time inbox access
WO2006136660A1 (en) 2005-06-21 2006-12-28 Seven Networks International Oy Maintaining an ip connection in a mobile network
US7769395B2 (en) 2006-06-20 2010-08-03 Seven Networks, Inc. Location-based operations and messaging
US8693494B2 (en) 2007-06-01 2014-04-08 Seven Networks, Inc. Polling
US8805425B2 (en) 2007-06-01 2014-08-12 Seven Networks, Inc. Integrated messaging
US8364181B2 (en) 2007-12-10 2013-01-29 Seven Networks, Inc. Electronic-mail filtering for mobile devices
US8793305B2 (en) * 2007-12-13 2014-07-29 Seven Networks, Inc. Content delivery to a mobile device from a content service
US9002828B2 (en) 2007-12-13 2015-04-07 Seven Networks, Inc. Predictive content delivery
US8107921B2 (en) 2008-01-11 2012-01-31 Seven Networks, Inc. Mobile virtual network operator
US8862657B2 (en) 2008-01-25 2014-10-14 Seven Networks, Inc. Policy based content service
US20090193338A1 (en) 2008-01-28 2009-07-30 Trevor Fiatal Reducing network and battery consumption during content delivery and playback
US8787947B2 (en) 2008-06-18 2014-07-22 Seven Networks, Inc. Application discovery on mobile devices
US8078158B2 (en) 2008-06-26 2011-12-13 Seven Networks, Inc. Provisioning applications for a mobile device
US8909759B2 (en) 2008-10-10 2014-12-09 Seven Networks, Inc. Bandwidth measurement
WO2010115796A1 (en) * 2009-04-07 2010-10-14 Basf Se Composition for metal plating comprising suppressing agent for void free submicron feature filling
US8166203B1 (en) * 2009-05-29 2012-04-24 Google Inc. Server selection based upon time and query dependent hashing
US9077630B2 (en) 2010-07-26 2015-07-07 Seven Networks, Inc. Distributed implementation of dynamic wireless traffic policy
US8838783B2 (en) 2010-07-26 2014-09-16 Seven Networks, Inc. Distributed caching for resource and mobile network traffic management
CA2806557C (en) 2010-07-26 2014-10-07 Michael Luna Mobile application traffic optimization
US9043433B2 (en) * 2010-07-26 2015-05-26 Seven Networks, Inc. Mobile network traffic coordination across multiple applications
US9118611B2 (en) * 2010-08-20 2015-08-25 Mosys, Inc. Data synchronization for circuit resources without using a resource buffer
US9330196B2 (en) 2010-11-01 2016-05-03 Seven Networks, Llc Wireless traffic management system cache optimization using http headers
CN103620576B (en) 2010-11-01 2016-11-09 七网络公司 Caching for mobile application behavior and network conditions
US8190701B2 (en) 2010-11-01 2012-05-29 Seven Networks, Inc. Cache defeat detection and caching of content addressed by identifiers intended to defeat cache
US9060032B2 (en) 2010-11-01 2015-06-16 Seven Networks, Inc. Selective data compression by a distributed traffic management system to reduce mobile data traffic and signaling traffic
WO2012060997A2 (en) 2010-11-01 2012-05-10 Michael Luna Application and network-based long poll request detection and cacheability assessment therefor
US8843153B2 (en) 2010-11-01 2014-09-23 Seven Networks, Inc. Mobile traffic categorization and policy for network use optimization while preserving user experience
US8484314B2 (en) 2010-11-01 2013-07-09 Seven Networks, Inc. Distributed caching in a wireless network of content delivered for a mobile application over a long-held request
WO2012060995A2 (en) 2010-11-01 2012-05-10 Michael Luna Distributed caching in a wireless network of content delivered for a mobile application over a long-held request
US8326985B2 (en) 2010-11-01 2012-12-04 Seven Networks, Inc. Distributed management of keep-alive message signaling for mobile network resource conservation and optimization
WO2012071384A2 (en) 2010-11-22 2012-05-31 Michael Luna Optimization of resource polling intervals to satisfy mobile device requests
CA2798523C (en) 2010-11-22 2015-02-24 Seven Networks, Inc. Aligning data transfer to optimize connections established for transmission over a wireless network
EP2661697B1 (en) 2011-01-07 2018-11-21 Seven Networks, LLC System and method for reduction of mobile network traffic used for domain name system (dns) queries
EP2700019B1 (en) 2011-04-19 2019-03-27 Seven Networks, LLC Social caching for device resource sharing and management
EP2702827A4 (en) 2011-04-27 2014-10-22 Seven Networks Inc MOBILE DEVICE DISCHARGING REQUESTS MOBILE APPLICATION TO REMOTE ENTITY TO KEEP MOBILE DEVICE RESOURCES AND NETWORK RESOURCES AND RELATED METHODS
US8621075B2 (en) 2011-04-27 2013-12-31 Seven Metworks, Inc. Detecting and preserving state for satisfying application requests in a distributed proxy and cache system
EP2737741A4 (en) 2011-07-27 2015-01-21 Seven Networks Inc Monitoring mobile application activities for malicious traffic on a mobile device
US8977755B2 (en) 2011-12-06 2015-03-10 Seven Networks, Inc. Mobile device and method to utilize the failover mechanism for fault tolerance provided for mobile traffic management and network/device resource conservation
US8934414B2 (en) 2011-12-06 2015-01-13 Seven Networks, Inc. Cellular or WiFi mobile traffic optimization based on public or private network destination
EP2788889A4 (en) 2011-12-07 2015-08-12 Seven Networks Inc Flexible and dynamic integration schemas of a traffic management system with various network operators for network traffic alleviation
WO2013086447A1 (en) 2011-12-07 2013-06-13 Seven Networks, Inc. Radio-awareness of mobile device for sending server-side control signals using a wireless network optimized transport protocol
US9380110B2 (en) 2011-12-09 2016-06-28 Google Technology Holdings LLC Adaptive data synchronization based on data plan or network usage
US9021021B2 (en) 2011-12-14 2015-04-28 Seven Networks, Inc. Mobile network reporting and usage analytics system and method aggregated using a distributed traffic optimization system
US8861354B2 (en) 2011-12-14 2014-10-14 Seven Networks, Inc. Hierarchies and categories for management and deployment of policies for distributed wireless traffic optimization
US9832095B2 (en) 2011-12-14 2017-11-28 Seven Networks, Llc Operation modes for mobile traffic optimization and concurrent management of optimized and non-optimized traffic
GB2499306B (en) 2012-01-05 2014-10-22 Seven Networks Inc Managing user interaction with an application on a mobile device
US9203864B2 (en) 2012-02-02 2015-12-01 Seven Networks, Llc Dynamic categorization of applications for network access in a mobile network
WO2013116852A1 (en) 2012-02-03 2013-08-08 Seven Networks, Inc. User as an end point for profiling and optimizing the delivery of content and data in a wireless network
US8812695B2 (en) 2012-04-09 2014-08-19 Seven Networks, Inc. Method and system for management of a virtual network connection without heartbeat messages
US20130268656A1 (en) 2012-04-10 2013-10-10 Seven Networks, Inc. Intelligent customer service/call center services enhanced using real-time and historical mobile application and traffic-related statistics collected by a distributed caching system in a mobile network
WO2014011216A1 (en) 2012-07-13 2014-01-16 Seven Networks, Inc. Dynamic bandwidth adjustment for browsing or streaming activity in a wireless network based on prediction of user behavior when interacting with mobile applications
US9161258B2 (en) 2012-10-24 2015-10-13 Seven Networks, Llc Optimized and selective management of policy deployment to mobile clients in a congested network to prevent further aggravation of network congestion
US9307493B2 (en) 2012-12-20 2016-04-05 Seven Networks, Llc Systems and methods for application management of mobile device radio state promotion and demotion
US9241314B2 (en) 2013-01-23 2016-01-19 Seven Networks, Llc Mobile device with application or context aware fast dormancy
US8874761B2 (en) 2013-01-25 2014-10-28 Seven Networks, Inc. Signaling optimization in a wireless network for traffic utilizing proprietary and non-proprietary protocols
US9326185B2 (en) 2013-03-11 2016-04-26 Seven Networks, Llc Mobile network congestion recognition for optimization of mobile traffic
US9736222B1 (en) * 2013-04-28 2017-08-15 Amdocs Software Systems Limited System, method, and computer program for automatically exposing application programming interfaces (APIS) associated with an application server to one or more client devices
US9065765B2 (en) 2013-07-22 2015-06-23 Seven Networks, Inc. Proxy server associated with a mobile carrier for enhancing mobile traffic management in a mobile network
CN103647727B (en) * 2013-11-29 2017-01-18 福建星网锐捷网络有限公司 Audio and video transmission control method and audio and video transmission control device
US9906977B2 (en) 2014-04-18 2018-02-27 Apple Inc. Deterministic RRC connections
US10375646B2 (en) * 2014-04-18 2019-08-06 Apple Inc. Coordination between application and baseband layer operation
US9497771B2 (en) 2014-04-18 2016-11-15 Apple Inc. Deterministic RRC connections
US20150341280A1 (en) * 2014-05-22 2015-11-26 Toshiba Tec Kabushiki Kaisha Method to diffuse cloud peak load by dynamically adjusting communication schedules
US20160150006A1 (en) * 2014-11-21 2016-05-26 At&T Intellectual Property I, L.P. Device data transfer via a wireless interface
US10383055B2 (en) 2015-01-26 2019-08-13 Hewlett Packard Enterprise Development Lp Regulating a power consumption state of a cellular radio

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1460354A (en) * 2000-12-20 2003-12-03 高通股份有限公司 Time synchronization in cellular network device

Family Cites Families (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7924783B1 (en) * 1994-05-06 2011-04-12 Broadcom Corporation Hierarchical communications system
US6694146B1 (en) * 1995-09-25 2004-02-17 Pacific Comm Sciences Inc Method for reducing time required to receive and decode a temporary equipment identifier message
US5867657A (en) * 1996-06-06 1999-02-02 Microsoft Corporation Distributed scheduling in a multiple data server system
US7209949B2 (en) * 1998-05-29 2007-04-24 Research In Motion Limited System and method for synchronizing information between a host system and a mobile data communication device
US7305475B2 (en) * 1999-10-12 2007-12-04 Webmd Health System and method for enabling a client application to operate offline from a server
US7155487B2 (en) * 2000-11-30 2006-12-26 Intel Corporation Method, system and article of manufacture for data distribution over a network
FI20012256A0 (en) * 2001-11-20 2001-11-20 Nokia Corp Mobile networks and digital broadcasting services
US7299304B2 (en) * 2001-11-20 2007-11-20 Intel Corporation Method and architecture to support interaction between a host computer and remote devices
JP2003162470A (en) * 2001-11-27 2003-06-06 Fujitsu Ltd Delivery control program and method
JP2003230121A (en) * 2001-11-30 2003-08-15 Fujitsu Ltd Content distribution method, content viewing method, server device, and terminal device
JP2003223385A (en) * 2002-01-31 2003-08-08 Matsushita Electric Ind Co Ltd Data distribution system and data distribution method
US7130313B2 (en) * 2002-02-14 2006-10-31 Nokia Corporation Time-slice signaling for broadband digital broadcasting
EP1483689B1 (en) * 2002-03-11 2010-10-13 Research In Motion Limited System and method for pushing data to a mobile device
US7110783B2 (en) * 2002-04-17 2006-09-19 Microsoft Corporation Power efficient channel scheduling in a wireless network
US8271971B2 (en) * 2002-11-26 2012-09-18 Hewlett-Packard Development Company, L.P. System and method for automated program updating in a remote appliance
US7693117B2 (en) * 2002-12-16 2010-04-06 Avaya Inc. Power-saving mechanism for periodic traffic streams in wireless local-area networks
CN1324858C (en) * 2003-01-13 2007-07-04 三星电子株式会社 Apparatus and method for decreasing consumption by energy-saving polling table
US20040225525A1 (en) * 2003-05-05 2004-11-11 Weitzman Vernon L. Automatic contacts replication system and software
CA2524789C (en) * 2003-05-06 2010-09-28 Research In Motion Limited System and method of wireless device activity messaging
US7286845B2 (en) * 2003-06-30 2007-10-23 Nokia Corporation System, and associated method, for scheduling weighted transmissions from multiple antennas
US7069303B2 (en) * 2003-08-21 2006-06-27 Par3 Communications, Inc. Method and system for regulating the dispatching of messages for requestors
KR101015642B1 (en) * 2003-09-19 2011-02-22 삼성전자주식회사 Data push service system and method through heterogeneous network
US20050071419A1 (en) * 2003-09-26 2005-03-31 Lewontin Stephen Paul System, apparatus, and method for providing Web services using wireless push
US7324474B2 (en) * 2003-10-21 2008-01-29 Qualcomm Incorporated Methods and apparatus for Network Initiated Data Services
JP4367090B2 (en) * 2003-10-31 2009-11-18 日本電気株式会社 Observation result communication terminal and information collection system
GB2415335B (en) * 2004-06-15 2007-09-26 Toshiba Res Europ Ltd Wireless terminal dynamically programmable proxies
US20060248197A1 (en) * 2005-04-27 2006-11-02 Evans Scott C Adaptive connectionless scheduling protocol
CA2604897C (en) * 2005-04-18 2013-05-28 Research In Motion Limited System and method for enabling asynchronous push-based applications on a wireless device
EP1715656B1 (en) 2005-04-18 2008-05-14 Research In Motion Limited Offering a push service to a wireless device using a push proxy which monitors the coverage state of the device
WO2007007330A2 (en) 2005-07-11 2007-01-18 Yossi Glazer System and method for scheduling and receiving reminder messages
CN1794708A (en) * 2005-07-29 2006-06-28 华为技术有限公司 Display service system and method of issuring display information
US8600336B2 (en) * 2005-09-12 2013-12-03 Qualcomm Incorporated Scheduling with reverse direction grant in wireless communication systems
US20070074217A1 (en) * 2005-09-26 2007-03-29 Ryan Rakvic Scheduling optimizations for user-level threads
FR2893476B1 (en) * 2005-11-14 2008-01-25 Radiotelephone Sfr METHOD AND SYSTEM FOR SIMULATION AND RESOURCE MANAGEMENT OF A MOBILE TELEPHONY NETWORK.
WO2007082015A2 (en) * 2006-01-11 2007-07-19 Fisher-Rosemount Systems, Inc. Control of low power wireless networks for power conservation
US7647037B2 (en) * 2006-01-31 2010-01-12 International Business Machines Corporation Location aware, on demand, media delivery to remote devices
JP4699279B2 (en) * 2006-05-18 2011-06-08 株式会社エヌ・ティ・ティ・ドコモ Mobile communication terminal, distribution server, update notification distribution system, and update notification control method
US20080113656A1 (en) * 2006-11-15 2008-05-15 Lg Telecom Ltd. System and method for updating contents
US20080126751A1 (en) * 2006-11-27 2008-05-29 Shay Mizrachi Scheduler hint method and system to improve network interface controller (nic) receive (rx) processing cache performance
US7944868B2 (en) * 2006-12-04 2011-05-17 Nec Laboratories America, Inc. Method and system for dynamic power management in wireless local area networks
US20080170526A1 (en) * 2007-01-12 2008-07-17 Qualcomm Incorporated Method and apparatus for extending standby battery life of a wireless device
US20090182802A1 (en) * 2008-01-10 2009-07-16 Microsoft Corporation Mobile device management scheduling
US8166145B2 (en) * 2008-01-10 2012-04-24 Microsoft Corporation Managing event-based conditional recurrent schedules
US8230436B2 (en) * 2008-01-10 2012-07-24 Microsoft Corporation Aggregating recurrent schedules to optimize resource consumption
US8020025B2 (en) * 2008-06-04 2011-09-13 Sony Ericsson Mobile Communications Ab Power saving scheduler for timed events
US8112475B2 (en) * 2008-06-27 2012-02-07 Microsoft Corporation Managing data delivery based on device state
US8090826B2 (en) * 2008-06-27 2012-01-03 Microsoft Corporation Scheduling data delivery to manage device resources
US7945206B2 (en) * 2009-02-04 2011-05-17 Telefonaktiebolaget L M Ericsson (Publ) Data packet transmission scheduling in a mobile communication system

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1460354A (en) * 2000-12-20 2003-12-03 高通股份有限公司 Time synchronization in cellular network device

Also Published As

Publication number Publication date
EP2340673A2 (en) 2011-07-06
KR20110061578A (en) 2011-06-09
WO2010036768A3 (en) 2010-06-17
WO2010036768A2 (en) 2010-04-01
KR101617057B1 (en) 2016-04-29
EP2340673B1 (en) 2017-04-26
JP5592380B2 (en) 2014-09-17
CN102165818A (en) 2011-08-24
US20100077083A1 (en) 2010-03-25
EP2340673A4 (en) 2014-07-23
US7966410B2 (en) 2011-06-21
JP2012503952A (en) 2012-02-09

Similar Documents

Publication Publication Date Title
CN102165818B (en) Coordinating data delivery using time suggestions
US8090826B2 (en) Scheduling data delivery to manage device resources
RU2502116C2 (en) Aggregating recurrent schedules to optimise resource consumption
US9462965B2 (en) Dynamic adjustment of mobile device based on system events
US9432796B2 (en) Dynamic adjustment of mobile device based on peer event data
US9432839B2 (en) Dynamic adjustment of mobile device based on thermal conditions
US8099505B2 (en) Aggregating connection maintenance to optimize resource consumption
US9813990B2 (en) Dynamic adjustment of mobile device based on voter feedback
KR20120052260A (en) Adapting pushed content delivery based on predictiveness
US20070100480A1 (en) Multi-modal device power/mode management
US8397099B2 (en) Using pulses to control work ingress
US8473957B2 (en) Architecture for providing on-demand and background processing
US9552035B2 (en) Method, node and computer program for reset of timers

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150423

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20150423

Address after: Washington State

Patentee after: Micro soft technique license Co., Ltd

Address before: Washington State

Patentee before: Microsoft Corp.