US20150373146A1 - Data Delivery Optimization - Google Patents
Data Delivery Optimization Download PDFInfo
- Publication number
- US20150373146A1 US20150373146A1 US14/840,605 US201514840605A US2015373146A1 US 20150373146 A1 US20150373146 A1 US 20150373146A1 US 201514840605 A US201514840605 A US 201514840605A US 2015373146 A1 US2015373146 A1 US 2015373146A1
- Authority
- US
- United States
- Prior art keywords
- computing device
- data
- server
- mobile computing
- block
- 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.)
- Abandoned
Links
- 238000005457 optimization Methods 0.000 title description 2
- 238000000034 method Methods 0.000 claims abstract description 151
- 238000004891 communication Methods 0.000 claims description 55
- 230000015654 memory Effects 0.000 claims description 26
- 238000010586 diagram Methods 0.000 description 36
- 230000008569 process Effects 0.000 description 24
- 238000010200 validation analysis Methods 0.000 description 16
- 230000008867 communication pathway Effects 0.000 description 14
- 238000013498 data listing Methods 0.000 description 13
- 230000005540 biological transmission Effects 0.000 description 11
- 230000001413 cellular effect Effects 0.000 description 11
- 230000006870 function Effects 0.000 description 9
- 230000003993 interaction Effects 0.000 description 5
- 230000004044 response Effects 0.000 description 5
- 230000001360 synchronised effect Effects 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 230000006378 damage Effects 0.000 description 3
- 238000001514 detection method Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000011218 segmentation Effects 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000005670 electromagnetic radiation Effects 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Images
Classifications
-
- H04L67/32—
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
- H04L51/21—Monitoring or handling of messages
- H04L51/216—Handling conversation history, e.g. grouping of messages in sessions or threads
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0896—Bandwidth or capacity management, i.e. automatically increasing or decreasing capacities
-
- H04L51/16—
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
- H04L51/21—Monitoring or handling of messages
- H04L51/214—Monitoring or handling of messages using selective forwarding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
- H04L51/42—Mailbox-related aspects, e.g. synchronisation of mailboxes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
- H04L67/1074—Peer-to-peer [P2P] networks for supporting data block transmission mechanisms
- H04L67/1078—Resource delivery mechanisms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L5/00—Arrangements affording multiple use of the transmission path
- H04L5/003—Arrangements for allocating sub-channels of the transmission path
- H04L5/0058—Allocation criteria
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L5/00—Arrangements affording multiple use of the transmission path
- H04L5/003—Arrangements for allocating sub-channels of the transmission path
- H04L5/0058—Allocation criteria
- H04L5/0069—Allocation based on distance or geographical location
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
- H04L67/1074—Peer-to-peer [P2P] networks for supporting data block transmission mechanisms
- H04L67/1076—Resource dissemination mechanisms or network resource keeping policies for optimal resource availability in the overlay network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
- H04L67/1074—Peer-to-peer [P2P] networks for supporting data block transmission mechanisms
- H04L67/1078—Resource delivery mechanisms
- H04L67/108—Resource delivery mechanisms characterised by resources being split in blocks or fragments
Definitions
- the present invention relates generally to data transfer between computer devices and more particularly to methods and systems for optimizing the delivery of data to mobile devices.
- Today's busy information worker may have multiple mobile devices all capable of working with data.
- a traveler may have two mobile devices, such as a smart phone and a laptop computer.
- the smart phone and laptop computer may both be capable of manipulating and presenting the traveler with the same data, such as e-mail.
- the smart phone and laptop computer may be capable of performing the same tasks, under various circumstances the user may prefer to work with one device over the other. For example, travelers may find occasionally checking e-mail on a smart phone useful, but may feel more productive doing involved work or reading on a laptop computer due to the laptop computer's generally larger screen and larger keyboard.
- a common problem faced by many travelers involves synchronizing multiple mobile device data sets with a central database server when working in locations where all of the traveler's mobile devices may not have connectivity.
- a traveler may sync their laptop computer and smart phone with an e-mail exchange server prior to boarding an airplane, such that the laptop computer and smart phone are both up to date with respect to sent and received e-mail.
- the traveler may work on the airplane writing and answering e-mails on the laptop computer. Should the traveler write several e-mails on their laptop computer, which may be isolated from a network connection while in flight, those drafted e-mails may be held in a queue for transmission to the e-mail exchange server when a network connection becomes available.
- the traveler's laptop computer and smart phone would then be out of sync in terms of e-mail because the laptop computer would contain drafted e-mails which the smart phone does not.
- the traveler's smart phone may connect to a cellular data network and download the latest e-mail from the e-mail exchange server.
- the traveler may use their smart phone to write and answer e-mails in the airport, and the cellular data network connection may enable the smart phone and server to remain updated in terms of e-mail.
- the laptop computer will remain out of sync both in terms of both incoming and the outgoing e-mail until it establishes a network connection.
- the traveler may now be faced with a data, synchronization problem because the laptop computer, smart phone, and e-mail exchange server may all contain different e-mail data sets. This data synchronization problem may cause the traveler frustration and hinder traveler productivity.
- the systems, methods, and devices of the various embodiments optimize the way in which data is delivered between mobile computing devices.
- the various embodiments leverage the interconnected nature of modern computing devices to optimize the delivery of a data set between a group of interconnected devices.
- a data set intended for a user having multiple computing devices may be segmented by an e-mail server and different portions of the data set may be transmitted to each of the user's computing devices.
- the two or more mobile computing devices may then share their data, set portions with each other to recreate the complete data set on each computing device.
- multiple computing devices each storing a complete data set may upload the complete data set to a single computing device (e.g., an e-mail server) by assigning upload responsibility for different segments of the complete data set to each device.
- Each of the multiple computing devices may upload their assigned segments to the single computing device.
- the single computing device may then combine the segments to recreate the complete data set.
- FIG. 1 is a communication system block diagram of a network suitable for use with various embodiments.
- FIG. 2 is a process flow diagram illustrating a first embodiment method for optimizing data delivery.
- FIG. 3 is a schematic diagram of example data set characteristics
- FIG. 4 is a data structure diagram of example user preference settings.
- FIG. 5 is a data structure diagram of example data segment map elements.
- FIG. 6 is another process flow diagram illustrating a second embodiment method for optimizing data delivery.
- FIG. 7 is a data, structure diagram of example packet header information.
- FIG. 8 is another process flow diagram illustrating a third embodiment method for optimizing data delivery.
- FIG. 9 is another process flow diagram illustrating a fourth embodiment method for optimizing data delivery.
- FIG. 10 is another process flow diagram illustrating a fifth embodiment method for optimizing data delivery.
- FIG. 11 is another process flow diagram illustrating a sixth embodiment method for optimizing data delivery.
- FIG. 12 is another process flow diagram illustrating a seventh embodiment method for optimizing data delivery.
- FIGS. 13A and 13B are process flow diagrams illustrating an embodiment method for managing interactions between computing devices to optimize data delivery.
- FIG. 14 is another process flow diagram illustrating an eighth embodiment method for optimizing data delivery.
- FIG. 15 is a process flow diagram illustrating an embodiment method for synchronizing the transmission of data segments.
- FIG. 16 is a process flow diagram illustrating an embodiment method for synchronizing the receipt of data, segments.
- FIG. 17 is a process flow diagram illustrating a first embodiment method for synchronizing a data set.
- FIG. 18 is another process flow diagram illustrating a second embodiment method for synchronizing a data set.
- FIG. 19 is a process flow diagram illustrating an embodiment method for assigning and transmitting data pending synchronization among computing devices.
- FIG. 20 is a process flow diagram illustrating a first embodiment method for assigning upload responsibility.
- FIG. 21 is another process flow diagram illustrating a second embodiment method for assigning upload responsibility.
- FIG. 22 is another process flow diagram illustrating a third embodiment method for assigning upload responsibility.
- FIG. 23 is another process flow diagram illustrating a fourth embodiment method for assigning upload responsibility.
- FIG. 24 is another process flow diagram illustrating a fifth embodiment method for assigning upload responsibility.
- FIG. 25 is a process flow diagram illustrating an embodiment method for directing the transmission of data pending synchronization among computing devices.
- FIG. 26 is another process flow diagram illustrating another embodiment method for assigning and transmitting data pending synchronization among computing devices.
- FIG. 27 is a process flow diagram illustrating an embodiment method for optimizing e-mail delivery.
- FIGS. 28A and 28B are additional process flow diagrams illustrating another embodiment method for managing interactions between computing devices to optimize data delivery.
- FIG. 29 is a component diagram of an example mobile computing device suitable for use with the various embodiments.
- FIG. 30 is a component diagram of an example server suitable for use with the various embodiments.
- FIG. 31 is a component diagram of another example mobile computing device suitable for use with the various embodiments.
- mobile device and “mobile computing device” refer to any one or all of cellular telephones, tablet computers, personal data assistants (PDAs), palm-top computers, notebook computers, laptop computers, personal computers, wireless electronic mail receivers and cellular telephone receivers (e.g., the Blackberry® and Treo® devices), multimedia Internet enabled cellular telephones (e.g., Blackberry Storm®), multimedia enabled smart phones (e.g., Android® and Apple iPhone®), and similar electronic devices that include a programmable processor, memory, a communication transceiver, and a display.
- PDAs personal data assistants
- Palm-top computers notebook computers
- laptop computers personal computers
- wireless electronic mail receivers and cellular telephone receivers e.g., the Blackberry® and Treo® devices
- multimedia Internet enabled cellular telephones e.g., Blackberry Storm®
- smart phones e.g., Android® and Apple iPhone®
- similar electronic devices that include a programmable processor, memory, a communication transceiver, and a display.
- e-mail is used herein to refer generally to any and all data to which the embodiments could be applied, including a variety of word, spread sheet, and multimedia files, and is not intended to limit the scope of the claims unless specifically recited.
- server is used to refer to any computing device capable of functioning as a server, such as a master exchange server, mail server, document server, or any other type of server.
- a server may be a dedicated computing device or a computing device running an application which may cause the computing device to operate as a server.
- a server application may be a full function server application, or a light or secondary server application that is configured to provide synchronization services among the dynamic databases on mobile computing devices.
- a light server or secondary server may be a slimmed-down version of server type functionality that can be implemented on a mobile computing device thereby enabling it to function as an Internet server (e.g., an enterprise e-mail server) only to the extent necessary to provide the functionality described herein.
- the methods, systems, and devices of the various embodiments optimize the way in which data is delivered between computing devices.
- the various embodiments leverage the interconnected nature of modern computing devices to optimize the delivery of a data set between a group of interconnected computing devices.
- a data set intended for multiple mobile computing devices may be segmented and different portions of the data set may be provided to each mobile computing device. The intended mobile computing devices may then share their data set portions to recreate the complete data set on each mobile computing device.
- multiple mobile computing devices each storing a complete data set may need to upload the complete data set to a single computing device. The multiple mobile computing devices may assign upload responsibility for segments of the complete data set among each other, and the multiple mobile computing devices may each upload their assigned segments to the single computing device. The single computing device may then combine the segments to recreate the complete data set.
- a user's two or more mobile computing devices may be configured to recognize when one of the mobile computing devices is out of synchronization with the other in terms of a particular data set. If such a situation is detected, the mobile computing devices may accomplish an update or synchronization so that both mobile computing devices reflect a common data set.
- a mobile computing device may validate itself to other mobile computing devices so that synchronization is only accomplished between two mobile computing devices authorized by the user.
- mobile computing devices may be configured to receive temporary data generated in one mobile computing device that is pending synchronization with another computing device, such as a server.
- the mobile computing devices may be configured to translate data between applications to match the application format implemented on each mobile computing device.
- alternating or load-balancing of data delivery may be accomplished to optimize the overall speed or cost of data delivery.
- conditional data delivery capabilities implemented on one or more of the mobile computing devices may de-conflict data delivery occurring simultaneously from multiple parties or multiple party e-mail threads.
- FIG. 1 illustrates a network system 100 suitable for use with the various embodiments.
- the network system 100 may include three devices, a server 102 , and two mobile computing devices, a smart phone 104 and a laptop computer 106 . While the various embodiments are particularly useful in relation to a server 102 , smart phone 104 , and laptop computer 106 , the embodiments are not limited to these devices and may be implemented in any device with no changes to the methods. Additionally, while the various embodiments are discussed in relation to interactions between three devices, the embodiments are not limited to three devices, and the methods may be implemented in network systems comprised of an unlimited number of devices.
- the server 102 may be a master exchange server, mail server, document server, or any other type of central database server.
- the server 102 and the smart phone 104 may exchange data with each other via a communication pathway 108 .
- the laptop computer 106 and the server 102 may exchange data with each other via communication pathway 110 .
- the laptop computer 106 and the smart phone 104 may communicate with each other via the communication pathway 112 .
- the communication pathways 108 , 110 , and 112 may be used to transmit data between the devices.
- the communication pathways 108 , 110 , and 112 may be any connection type known in the art.
- the communication pathways 108 and 110 used to connect to the server 102 may be wireless connections, such as a wireless Wi-Fi connection between the smart phone 104 and/or the laptop computer 106 and a Wi-Fi access point 118 .
- the Wi-Fi access point 118 may connect to the Internet 114 .
- the server 102 may be connected to the Internet 114 , and in this manner data may be transmitted from/to the smart phone 104 and/or the laptop computer 106 via the Wi-Fi access point 118 , and over the Internet 114 to/from the server 102 by methods well known in the art.
- communication pathways 108 and 110 may be established using a cellular network.
- the smart phone 104 and/or the laptop computer 106 may transmit data wirelessly to a cellular network cell tower or base station 116 which may connect to the Internet 114 .
- the server 102 may be connected to the Internet 114 , and in this manner data may be transmitted from/to the smart phone 104 and/or the laptop computer 106 via the wireless cellular tower or base station 116 , and over the Internet 114 to/from the server 102 by methods well known in the art.
- the communication pathway 110 between the laptop computer 106 and the server 102 may be a wired local area network connection, such as an Ethernet connection 126 .
- the communication pathway 112 between the smart phone 104 and the laptop 106 may be a wireless data link, such as a BlueTooth connection 120 .
- the communication pathway 112 between the smart phone 104 and the laptop computer 106 may be a wireless Wi-Fi data link via a Wi-Fi access point 122 , In this manner data may be transmitted from/to the smart phone 104 and/or the laptop computer 106 via the Wi-Fi access point 122 by methods well known in the art.
- the communication pathway 112 may also be a wired connection between the laptop computer 106 and smart phone 104 , such as a USB cable 124 connected between the devices.
- the communication pathways 108 , 110 , and 112 may be any wired connections, such as a USB connection, a FireWire connection or local area network connection (e.g., Ethernet), as well as any wireless communication links, such as Bluetooth, Wi-Fi, ZigBee, cellular, CDMA, TDMA, GSM, PCS, G-3, G-4, LTE, or any other type wired or wireless connection. While the various aspects are particularly useful with the various embodiments, the communication pathways 108 , 110 , and 112 are not limited to these communication technologies and communication pathways 108 , 110 , and 112 may be established using any communication technology known in the art without changing the implementation of the embodiment methods.
- FIG. 2 illustrates an embodiment method 200 for optimizing data delivery among three or more computing devices.
- the method 200 may be implemented between a server 102 and two or more mobile computing devices, such as a smart phone 104 and laptop computer 106 . While discussed in relation to a server 102 , smart phone 104 , and laptop computer 106 , the method 200 may be implemented in any device with the ability to act as a data server for other devices.
- the server 102 may identify a data set to be communicated to the mobile computing devices.
- a data set may include any group of data, such as content objects, e-mails, lines of e-mails, text, blocks of text, web pages, parts of web pages, zip files, spread sheets, documents, portions of documents, files, and/or parts of files.
- the server 102 may determine characteristics of the data set. Data set characteristics may include various characteristics discussed further below.
- the server 102 may separate the data set into segments. A segment may include any grouping of the data within the data set, so the separation of the data set at block 206 may be performed based on the data set characteristics determined in block 204 , or the data set may be separated according to pre-determined parameters, such as a set segment size.
- the server 102 may assign an identification (“ID”) to each segment.
- ID an identification
- This segment ID may be a unique number, name, or identification element generated by the server 102 . Additionally a segment ID may contain or provide information about the segment, such as information regarding the segment contents, the time of creation of the segment, the server 102 , or the segment size.
- the server 102 may write the segment ID into each segment. The segment ID may be written into data representing the entire segment, or may be written into each data element comprising the individual segment.
- the server 102 may determine the total number of segments created from the data set.
- the server 102 may determine the available mobile computing devices.
- Available mobile computing devices may be a smart phone 104 and a laptop computer 106 , for example, which may be connected to the server 102 .
- available mobile computing devices may be mobile computing devices that are registered with the server 102 , but that may not currently be connected to the server 102 .
- the server may determine whether the mobile computing devices are synchronization enabled.
- a synchronization enabled mobile computing device may be a mobile computing device that is capable of synchronizing/exchanging information with another mobile computing device.
- the server 102 may determine the geographic location of the mobile computing devices.
- the server 102 may determine the geographic location of the mobile computing devices by global positioning system (GPS) information provided to the server 102 by the mobile computing devices, by reference to information about the connections through which the mobile computing devices may be communicating to the server 102 (i.e., which cell network nodes the mobile computing devices may be using), through a mobile computing device user input identifying the location of each mobile computing device, or other methods.
- GPS global positioning system
- the server may determine if the mobile computing devices are collocated. As examples, collocation may be determined by comparing mobile computing device UPS information, cellular network information, or user inputs.
- the server 102 may determine two mobile computing devices are more than a distance threshold setting apart based on UPS information.
- the server 102 may determine the mobile computing device connection bandwidths. Alternatively, the server 102 may determine an estimated mobile computing device connection bandwidth for each mobile computing device based on the type of connection the mobile computing device may be using to communicate with the server 102 . At block 226 the server 102 may determine user preference settings. User preference settings may be related to connections or devices to use for updates. User preference settings are discussed below.
- the server 102 may assign data segments to each mobile computing device.
- the assignments of data segments to each mobile computing device may be made based on various considerations discussed below.
- the server may generate a data segment map identifying each data segment and the mobile computing device to which each segment may be assigned or other elements as discussed below.
- the server 102 may write data segment assignment information into each data segment.
- the data segment assignment information may be written into data representing the entire segment, or may be written into each data element comprising the individual segment.
- the server 102 may transmit the data segments to their assigned mobile computing devices. In this manner each mobile computing device may receive different data segments.
- a laptop computer 106 may receive a first portion of the data segments and a smart phone 104 may receive a second portion of the data segments, such that the combination of the first and second portions will yield the entire data set.
- the server 102 may transmit the data segment map to each mobile computing device, in this manner each mobile computing device may receive a copy of the entire data segment map.
- the data segment map may allow the individual mobile computing devices to determine the contents or the original data set even though each mobile computing device may not receive all the segments of the original data set from the server.
- the server 102 may store copies of the transmitted data segments and at block 240 the server 102 may store a copy of the data segment map. In this manner, the server 102 may be able to support future single device sessions, or retransmission of assigned data segments should a device connection fail,
- FIG. 3 is a schematic diagram illustrating potential data set characteristics 302 .
- Data set characteristics 302 may include the calculated total size 304 of the data set.
- the total size 304 may be calculated in bytes or any other unit representative of the total size 304 of the data set.
- Data set characteristics 306 may also include the number of objects 206 , type of objects 308 , object priority 310 , and individual object size 312 .
- FIG. 4 is a data structure diagram illustrating potential elements of user preference settings 402 which may be stored in a memory of a server 102 .
- User preference settings 402 may include a listing of devices to update 404 , an order of device updates 406 , a connection preference 408 , a speed preference 410 , a data limit for a device 412 , or a data preference 414 .
- a listing of devices to update 404 may identify a selected number of a user's mobile computing devices, enabling a user to control which devices are updated.
- an order of device updates 406 may direct a server 102 to update the selected devices in a particular order or priority sequence.
- a connection preference 408 may direct a server 102 to use a Wi-Fi connection rather than a CDMA connection.
- a connection preference 408 may direct a server 102 to use the least expensive connection among a group of available connections.
- a speed preference 410 may direct a server 102 to use the fastest connections available.
- a data limit for a device 412 may set a maximum amount of data, to transmit from the server 102 to a device.
- a data preference 414 may direct a server 102 to assign a specific data type, such as e-mail, to a specific mobile device, such as a smart phone 104 .
- FIG. 5 is a data structure diagram illustrating potential data segment map elements 502 .
- Data segment map elements 502 may include the total number of segments 504 , the segment IDs 506 , data set characteristics 508 , segment device assignments 510 , segment size 512 , a segment creation time stamp 514 , and a server validation key 516 .
- the data segment map elements 502 may be used individually or in combination by the server 102 or mobile devices to aid in recreating the data set, identifying the data set, or communicating between any of the server 102 and mobile devices.
- a segment creation time stamp 514 may allow mobile devices to ensure they have the most up to date segments.
- a server validation key 516 may act as a trust/verification tool for mobile devices when communicating together and act as a security feature.
- the server validation key 516 may be provided by the server 102 as a way to validate the segments and/or mobile computing device to other mobile computing devices.
- the server validation key 516 may be an encrypted key provided from the server 102 .
- a mobile computing device receiving a server validation key 516 from a second mobile computing device may be able to use the serve validation key 516 to confirm that the information on the second mobile computing device actually originated at the server 102 .
- FIG. 6 illustrates an embodiment method 600 for optimizing data delivery similar to method 200 described above with reference to FIG. 2 , except that at block 602 the server 102 may create a packet for each segment.
- the server 102 may write header information into each packet. Header information may include various types of information as will be discussed further below.
- the server 102 may determine available mobile computing devices.
- the server 102 may assign packets to each mobile computing device in a manner similar to how data segments were assigned in block 228 discussed above.
- the server 102 may generate a data segment map.
- the server 102 may transmit the packets to their assigned mobile computing devices.
- the server 102 may transmit the data segment map to the mobile computing devices.
- FIG. 7 is a data structure diagram illustrating potential packet header information 702 .
- Packet header information 702 may include the segment ID 704 , a master data set ID 706 , a server ID 708 , a segment creation time stamp 710 , reassembly instructions 712 , and a packet creation time stamp 714 .
- a master data set ID 706 may be a unique identification created by the server 102 to identify the overall data set from which the segments were created.
- the server ID 708 may be a unique identification associated with the server 102 that created the packet.
- the reassembly instructions 712 may be instructions controlling the order in which packets are intended to be unpacked or the placement in the overall data, set of the segment contained in the packet.
- the packet creation time stamp 714 may be an indication of the time at which the packet was created.
- FIG. 8 illustrates an embodiment method 800 for optimizing data delivery which may be used in conjunction with method 200 described above with reference to FIG. 2 .
- the server 102 may determine the mobile computing device connection bandwidths for each mobile computing device.
- the server 102 may determine the total available bandwidth for all the mobile computing devices. As an example, the server 102 may sum the individual mobile computing device connection bandwidths to determine the total available bandwidth for all the mobile computing devices.
- the server 102 may assign data segments to each mobile computing device in proportion to each mobile computing device's connection bandwidth as a percentage of the total available bandwidth.
- a mobile computing device with a connection to the server representing 70% of the total available bandwidth between the two mobile computing devices may be assigned 70% of the data segments, while a mobile computing device with a connection to the server representing 30% of the total available bandwidth may be assigned 30% of the data segments.
- the server 102 may then transmit the data segments to the respective mobile computing devices as per methods 200 or 600 described above.
- FIG. 9 illustrates an embodiment method 900 for optimizing data delivery which may be used in conjunction with method 200 described above with reference to FIG. 2 .
- the server 102 may determine the mobile computing device connection bandwidths.
- the server 102 may determine data segment assignments that will result in the shortest estimated download time.
- the server 102 may assign the data segments to each mobile computing device based on the determined shortest download time. The server 102 may then transmit the data segments to the respective mobile computing devices as per methods 200 or 600 described above.
- FIG. 10 illustrates an embodiment method 1000 for optimizing data delivery which may be used in conjunction with method 200 described above with reference to FIG. 2 .
- the server 102 may determine the mobile computing device connection types.
- a connection between the server 102 and a smart phone 104 may be a 3G connection
- a connection between the server 102 and a laptop computer 106 may be a Wi-Fi connection.
- the server 102 may determine a cost associated with each mobile computing device connection.
- the server 102 may be provided information that a 3G connection results in a fee being charged to a user for data transmitted over the connection and that no fee is charged for data transmitted over a Wi-Fi connection.
- the server 102 may determine data segment assignments that will result in the lowest total download cost.
- the server 102 may assign data, segments to each mobile computing device based on the determined lowest total download cost. In this manner, a server 102 implementing method 1000 may operate in a cost saving mode. The server 102 may then transmit the data segments to the respective mobile computing devices as per methods 200 or 600 described above.
- FIG. 11 illustrates an embodiment method 1100 for optimizing data delivery similar to methods 200 and 800 above described with reference to FIGS. 2 and 8 , except that data segmentation may address changes in mobile computing device connection bandwidth.
- the server 102 may transmit the data segments to the assigned mobile computing devices.
- the server 102 may again determine the total available bandwidth.
- the server 102 may again assign data segments to each mobile computing device in proportion to each mobile computing device's connection bandwidth as a percentage of total available bandwidth, and at block 234 the server 102 may transmit the data segments to their now potentially newly assigned mobile computing devices. In this manner, the server 102 may continually adjust the assignment of data segments as bandwidth changes during data segment transmission.
- the server 102 may generate a data segment map. In this manner, the data segment map may not he generated until the data, segment assignments are finalized. At block 236 , the server 102 may transmit the data segment map to the mobile devices.
- FIG. 12 illustrates an embodiment method 1200 for optimizing data delivery similar to method 1100 described above with reference to FIG. 11 , except that data segmentation may compensate for the loss of a mobile computing device connection.
- the server 102 may transmit data segments to the assigned mobile computing devices.
- a full download query may be an indication to an application running on a mobile computing device to prompt the user to approve or disapprove the full download of the entire data set.
- the server 102 may generate a data segment map and at block 235 the server 102 may transmit the data segment map to the mobile computing devices. The server 102 may then transmit the data segments to the respective mobile computing devices as per methods 200 or 600 described above.
- the server 102 may determine whether a full download indication is received.
- FIGS. 13A and 13B illustrate another embodiment method 1300 for managing interactions between a server 102 , a smart phone 104 , and a laptop computer 106 to optimize data delivery.
- the server 102 may perform operations of method 200 described above with reference to FIG. 2 .
- the server 102 and the smart phone 104 may establish a data communication connection.
- the connection may be any connection suitable for transmitting data, such as those connections discussed previously in relation to FIG. 1 .
- the server 102 and laptop computer 106 may establish a data communication connection.
- the connection may be any connection suitable for transmitting data, such as those connections discussed previously in relation to FIG. 1 .
- the server 102 may perform operations of method 200 described above with reference to FIG. 2 .
- the server 102 may transmit the assigned data segments to the smart phone 104 .
- the smart phone 104 may receive its assigned data segments.
- the server 102 may transmit assigned data segments assigned to the laptop computer 106 .
- the laptop computer 106 may receive its assigned data segments.
- the server 102 may transmit the data, segment map to the smart phone 104 .
- the smart phone 104 may receive the data segment map.
- the server 102 may transmit the data segment map to the laptop computer 106 .
- the laptop computer 106 may receive the data, segment map.
- the smart phone 104 and the laptop computer 106 may establish a data communication connection with each other.
- the connection may be any connection suitable for transmitting data, such as those connections discussed previously in relation to FIG. 1 .
- the smart phone 104 may determine what data segments to transmit to the laptop computer 106 . The determination may be based at least in part on information in the data segment map received by the smart phone 104 .
- the laptop computer 106 may select data segments to transmit to the smart phone 104 . The selection may be based at least in part on the information in the data segment map received by the laptop computer 106 .
- the smart phone 104 may transmit selected data segments to the laptop computer 106 and at block 1336 the laptop computer 106 may receive the data segments.
- the laptop computer 106 may transmit selected data segments to the smart phone 104 , and at block 1340 the smart phone 104 may receive the data segments. In this manner, the full data set resident on the server 102 , may be assembled in both the smart phone 104 and the laptop computer 106 .
- FIG. 14 illustrates an embodiment method 1400 for optimizing data delivery which may be used in conjunction with method 200 describe above with reference to FIG. 2 .
- the server 102 may determine the mobile computing device types with which the server 102 has established connections. As an example, the server 102 may determine that the mobile computing devices are two different types of devices, i.e. a smart phone 104 , and a laptop computer 106 .
- the server 102 may determine the amount of each data segment to send based on the mobile computing device types. In this manner the server may determine a portion of the data to be sent to each mobile computing device based on the type of device. As an example, a smart phone 104 may only be able to receive and display the first three lines of an e-mail message.
- the server 102 may determine that only a limited amount of the data segment (i.e., the first three lines of the e-mail message) should be sent to the smart phone 104 .
- the server 102 may assign data segments to each mobile device.
- the server 102 may transmit the appropriate amount of each of the data segments assigned to the mobile computing devices based on the determined device capabilities. In this manner only a portion of the data segment (i.e., the determined amount) may be transmitted to a mobile computing device.
- FIG. 15 illustrates an embodiment method 1500 for synchronizing the transmission of data segments from a first computing device to a second computing device.
- the method 1500 may be implemented between two mobile computing devices, such as a smart phone 104 and a laptop computer 106 . While discussed in relation to two mobile computing devices (e.g., the smart phone 104 and the laptop computer 106 ) the method 1500 may be implemented among any number of computing devices, mobile or otherwise.
- a first mobile computing device such as a smart phone 104
- the first mobile computing device may detect the availability of the data link to the second mobile computing device through a previously established connection such as a Bluetooth connection.
- the first mobile computing device may determine the available mobile device data communication link connections to the second mobile computing device.
- Mobile computing devices may have the ability to establish more than one data communication link, and more than one data communication link may be established between the first and second mobile computing devices.
- the smart phone 104 may determine there is both a connection and a BlueTooth connection with the laptop computer 106 .
- the first mobile computing device may select an available mobile device data communication link connection established between the first and second mobile computing device.
- the smart phone 104 may select the BlueTooth connection. Selections of communication data link connections may be made in any manner, and may be made based on considerations similar to those discussed above in relation to FIGS. 8 , 9 , and 10 , such as cost or speed.
- the first mobile computing device may transmit a data waiting message to the second mobile computing device.
- the data waiting message may alert the second device that the first device has a data segment intended for a second device, Additionally, a data waiting message may include a listing of data segments intended for the second mobile computing device, information about a data segment such as its size, creation date, or content type, or any other information related to a data segment intended for the second mobile computing device.
- the first mobile computing device may receive a validation request from the second mobile computing device. The validation request may be a request from the second mobile computing device in response to the data waiting message.
- the validation request may be a request for information which may used by the second mobile device to validate the authenticity of the first mobile computing device or to validate the authenticity of the data resident on the first mobile computing device.
- the validation request may request the first mobile computing device provide the identity of a server from which the data segment originated.
- the second mobile computing device may use the identity of the server to validate that the segment originated on an authorized server, and thus a validation request may prevent the unauthorized parties from providing or receiving data.
- the first mobile computing device may transmit a data segment map to the second mobile computing device in response to receiving the validation request.
- the data segment map may contain information to be used by the second mobile computing device to validate the authenticity of the first mobile computing device or to validate the authenticity of the data resident on the first mobile computing device.
- the data segment map may contain a server ID to identify the server from which the data segment originated.
- the second mobile computing device may user the server ID to validate the first mobile computing device (e.g., by comparing the server ID to a stored list of authorized server IDs).
- the first mobile computing device may determine if a data segment transmit request is received.
- FIG. 16 illustrates an embodiment method 1600 for synchronizing the receipt of data segments from a first computing device at a second computing device.
- the method 1600 may be implemented by a second mobile computing device operating in conjunction with a first mobile computing device implementing method 1500 .
- the method 1600 may be implemented between two mobile computing devices, such as first mobile computing device, a smart phone 104 and a second mobile computing device, a laptop computer 106 . While discussed in relation to two mobile computing devices (laptop computer 106 and smart phone 104 ) the method 1600 may be implemented among any number of computing devices, mobile or otherwise.
- a second mobile computing device such as laptop computer 106 , may receive a data waiting message from a first mobile computing device, such as smart phone 104 .
- the data waiting message may be a message alerting the second device that the first device has a data segment intended for the second mobile computing device.
- a data waiting message may include a listing of data segments intended for the second mobile computing device, information about a data segment such as its size, creation date, or content type, or any other information related to a data segment intended for the second mobile computing device.
- the second mobile computing device may transmit a validation request to the first mobile computing device.
- the validation request may be sent from the second mobile computing device in response to the second mobile computing device receiving the data waiting message.
- the validation request may be a request for information which may used by the second mobile device to validate the authenticity of the first mobile computing device or to validate the authenticity of the data resident on the first mobile computing device.
- the validation request may be a message sent from the laptop computer 106 to the smart phone 104 requesting the smart phone 104 provide a server ID.
- the second mobile computing device may receive a data segment map from the first mobile computing device which may contain a server ID.
- the second mobile computing device may compare the data segment map to a current data set resident on the second mobile computing device to determine is any data segments on the first mobile computing device contain data not resident on the second mobile computing device.
- the laptop computer 106 may compare the data segment creation time stamps to determine if the data set on the laptop computer 106 is newer than the data set defined by the data segment map.
- the second mobile computing device may transmit a data segment transmit request to the first mobile computing device requesting the transmission of the data segment.
- the second mobile computing device may receive the data segment from the first mobile computing device.
- the method 1600 may end.
- FIG. 17 illustrates an embodiment method 1700 for synchronizing a data set between a first computing device and a second computing device.
- the method 1700 may be implemented between two mobile computing devices, such as a smart phone 104 and a laptop computer 106 . While discussed in relation to two mobile computing devices (smart phone 104 and laptop computer 106 ) the method 1700 may be implemented among any number of computing devices, mobile or otherwise.
- the first mobile computing device such as laptop computer 106
- Data pending server synchronization may be data which has been altered in some way since the last data synchronization between the first mobile computing device and a server occurred.
- Data pending server synchronization may be marked temporary in any manner, including by information written into a file header, a tag added to the data or an index or a pointer file, or by changing a data ID.
- the first mobile computing device may transmit a data, listing to the second mobile computing device, such as the smart phone 104 .
- a data listing may be a listing of data resident on the first mobile computing device, such as an index.
- the data listing may include an identification of data marked as temporary in block 1702 .
- the laptop computer 106 may transmit the data listing to a smart phone 104 over a communication data link connection established between the laptop computer 106 and the smart phone 104 .
- the first mobile computing device may receive a data set request from the second mobile computing device.
- a data set request may identify all or a portion of the data on the data listing which may be required by the second mobile computing device. Additionally, the data, set request may include information about the application format for data required by the second mobile computing device.
- the first mobile computing device may identify the data set required by the second mobile computing device based on the data listing received at block 1706 . Identification of the data set may include identifying an application format required by the second mobile computing device.
- first mobile computing device may translate the data set between application formats. As an example, the data stored on the laptop 106 may be in an application format only suitable for use on the laptop 106 .
- the smart phone 104 may require the data be translated into an application format suitable for use on the smart phone 104 . Therefore, the laptop 106 may translate the data set from an application format for the laptop 106 to an application format for the smart phone 104 .
- the first mobile computing device may transmit the now translated data set to the second mobile computing device.
- the laptop computer 106 may transmit the translated data set to the smart phone 104 over a communication data link connection established between the laptop computer 106 and the smart phone 104 .
- FIG. 18 illustrates an embodiment method 1800 for synchronizing a data set between a first computing device and a second computing device.
- the method 1800 may be implemented by a second mobile computing device operating in conjunction with a first mobile computing device implementing method 1700 .
- the method 1800 may be implemented between two mobile computing devices, such as first mobile computing device, a laptop computer 106 and a second mobile computing device, a smart phone 104 . While discussed in relation to two mobile computing devices (laptop computer 106 and smart phone 104 ) the method 1800 may be implemented among any number of computing devices, mobile or otherwise.
- a second mobile computing device such as the smart phone 104 , may receive a data listing from a first mobile computing device, such as the laptop 106 .
- a data listing may be a listing of data resident on the first mobile computing device and may include an identification of data marked as temporary.
- the second mobile computing device may compare the data listing to data resident on the second mobile computing device.
- the second mobile computing device may determine if it requires data on the data listing. This determination may be made using the results of the comparison of the data listing to the data resident on the second mobile computing device performed in block 1804 .
- the second mobile computing device may transmit a data set request to the first mobile computing device.
- a data set request may identify all or a portion of the data on the data listing which may be required by the second mobile computing device and may include information about the application format for data required by the second mobile computing device.
- the second mobile computing device may receive a data set from the first mobile computing device.
- a data set may include the data requested by the second mobile computing device translated into an application format suitable for use on the second mobile computing device.
- the second mobile computing device may update the data resident on the second mobile computing device with the received data set.
- the method 1800 may end.
- FIG. 19 illustrates an embodiment method 1900 for assigning and transmitting data pending synchronization among computing devices.
- the method 1900 may be implemented between a first mobile computing device, such as laptop computer 106 , a second mobile computing device, such as a smart phone 104 , and a server 102 . While discussed in relation to a laptop computer 106 , smart phone 104 , and server 102 , the method 1900 may be implemented among an unlimited number of devices.
- a first mobile computing device such as the laptop computer 106
- the communication data link connection may be any type of connection, as discussed above with reference to FIG.
- the first mobile computing device may synchronize a data set between the first mobile computing device and the second mobile computing device. Synchronization of the data set may be accomplished by any method, such as by implementing any of the methods discussed above with reference to FIGS. 15 , 16 , 17 , and 18 . Synchronization of the data set between the first mobile computing device and the second mobile computing device may result in an identical data set being resident on both the first mobile computing device and the second mobile computing device.
- the first mobile computing device may determine whether any data in the now synchronized data set is pending server synchronization.
- Data pending server synchronization may be data which has been altered in some way since the last data synchronization between the first mobile computing device and the server 102 .
- the first mobile computing device may determine data is pending server synchronization by reading file header information, recognizing a tag associated with the data, referencing a data segment map, or by receiving a user input indicating the data is pending server synchronization.
- the first mobile computing device may separate the data pending server synchronization into segments.
- a segment may include any grouping of the data pending server synchronization, and the separation of the data may be performed based on data characteristics, or the data pending server synchronization may be separated according to pre-determined parameters, such as a set segment size.
- the first mobile computing device may assign an identification (“ID”) to each pending segment.
- This pending segment ID may be a unique number, name, or identification element generated by the first mobile computing device.
- a pending segment ID may contain or provide information about the segment, such as information regarding the segment contents, the time of creation of the segment, the first mobile computing device, the second mobile computing device, and intended server, or the segment size.
- the first mobile computing device may write the pending segment ID into each pending segment.
- the pending segment ID may be written into data representing the entire segment, or may be written into each data element comprising the individual pending segment.
- the first mobile computing device may assign an upload responsibility for each pending segment.
- An upload responsibility may be an assignment for a specific mobile computing device to transmit a specific pending segment to a server.
- the laptop computer 106 may assign half the pending segments to the smart phone 104 for upload, and may assign the other half the pending segments to itself for upload. Assignment considerations are discussed further below.
- first mobile computing device may synchronize the pending segments and pending segment IDs with the second mobile computing device. Synchronization of the pending segments and pending segment IDs may result in the first and second mobile computing devices having similar data sets with similar pending segments and similar pending segment IDs.
- synchronization of the pending segments and pending segment IDs may be accomplished by the first mobile computing device transmitting the pending segments and pending segment IDs to the second mobile computing device.
- the first mobile computing device may transmit all of the pending segments and pending segment IDs to the second mobile computing device, or alternatively may transmit only the portion of the pending segments and pending segment IDs assigned to the second mobile computing device.
- the first mobile computing device may transmit instructions to the second mobile computing device for the second mobile computing device to use in creating identical pending segments and pending segment IDs.
- the instructions may include information such as the data included in each pending segment, a starting point for the data pending server synchronization and standard pending segment size, a pending segment ID numbering scheme, or other information enabling the second mobile computing device to recreate the pending data segments and pending segment IDs.
- the first mobile computing device may transmit the upload responsibilities for each pending segment to the second mobile computing device.
- the first mobile computing device may terminate its communication data link connection with the second mobile computing device.
- the first mobile computing device may establish a communication data link connection with the server 102 .
- the connection may be any type of connection, as discussed above with reference to FIG. 1 .
- the first mobile computing device may transmit its assigned pending segments to the server 102 .
- the first mobile computing device may determine if a full upload request is received from the server 102 .
- a full upload request may be a message received from the server 102 indicating that the server 102 requests a full upload of all data pending synchronization.
- the server 102 may be updated with all pending segments by the first mobile computing device and all data which was pending server synchronization may be provided to the server 102 despite the loss, damage, or destruction of the second mobile device.
- the first mobile device may terminate its communication data link connection with the server 102 .
- FIG. 20 illustrates an embodiment method 2000 for assigning upload responsibility which may be used in conjunction with method 1900 described above.
- the first mobile computing device may determine the estimated bandwidth available in both the first and second mobile computing device's data communication link connections to a server 102 .
- the laptop computer 106 may determine the estimated connection bandwidth for its connection to the server 102 and the estimated connection bandwidth for a connection between the smart phone 104 and the server 102 .
- the determination of the estimated connection bandwidths may be made by information received from each mobile computing device about its communication data link connection with the server 102 or stored bandwidth estimates for a device and/or connection type.
- first mobile computing device may determine the estimated total available bandwidth to a server 102 available using the first and second mobile computing devices by combining the estimated bandwidths for both mobile computing devices.
- the first mobile computing device may assign upload responsibility for each pending segment to a mobile computing device in proportion to that mobile computing device's estimated connection bandwidth with the server 102 as a percentage of total estimated total available bandwidth to the server 102 .
- the first mobile computing device may have a communication data link connection to the server 102 representing 70% of the total available bandwidth and the first mobile computing device may be assigned 70% of the data segments for transmission
- the second mobile computing device may have a communication data link connection to the server 102 representing 30% of the total available bandwidth and the second mobile computing device may be assigned 30% of the data segments for transmission.
- the first and second mobile computing devices may then complete the uploading of data to the server 102 per method 1900 as described above.
- FIG. 21 illustrates an embodiment method 2100 for assigning upload responsibility which may be used in conjunction with method 1900 described above.
- the first mobile computing device may determine the estimated bandwidth available in both the first and second mobile computing device's data communication link connections to a server 102 .
- the first mobile computing device may determine data upload responsibilities that will result in the shortest estimated upload time.
- the first mobile computing device may assign upload responsibility for each segment to a mobile computing device based on the determined shortest download time. The first and second mobile computing devices may then complete the uploading of data to the server 102 per method 1900 as described above.
- FIG. 22 illustrates an embodiment method 2200 for assigning upload responsibility which may be used in conjunction with method 1900 described above.
- the first mobile computing device may determine the mobile computing device to server 102 communication data link connection types.
- a communication data link connection between the server 102 and a smart phone 104 may be a 3G connection and a communication data link connection between the server 102 and a laptop computer 106 may be a Wi-Fi connection.
- the first mobile computing device may determine a data transmission cost associated with each mobile device to server 102 communication data link connection.
- the laptop computer 106 may be provided information that a 3G connection results in a fee being charged to a user for data transmitted over the connection and that no fee is charged for data transmitted over a connection.
- the first mobile computing device may determine data upload responsibilities that will result in the lowest total upload cost.
- the first mobile computing device may assign upload responsibility for each pending segment to a mobile computing device based on the determined lowest total upload cost. In this manner, a first mobile computing device implementing method 2200 may operate in a cost saving mode. The first and second mobile computing devices may then complete the uploading of data to the server 102 per method 1900 as described above.
- FIG. 23 illustrates an embodiment method 2300 for assigning upload responsibility which may be used in conjunction with method 1900 described above.
- the first mobile computing device may determine the total number of pending segments to be transmitted to the server 102 .
- the first mobile computing device may assign upload responsibility for some fraction (e.g., half) the total number of pending segments to the first mobile computing device, such as the laptop computer 106 , and upload responsibility for the other fraction of the total number of pending segments to the second mobile computing device, such as the smart phone 104 .
- the first and second mobile computing devices may then complete the uploading of data to the server 102 per method 1900 as described above.
- FIG. 24 illustrates an embodiment method 2400 for assigning upload responsibility which may be used in conjunction with method 1900 described above.
- the first mobile computing device may identify pending segments as even or odd segments. As an example the laptop computer 106 may write an even or odd identifying string into a data header for each segment.
- the first mobile computing device may assign upload responsibility for even pending segments to the first mobile device, such as the laptop computer 106 , and upload responsibility for odd pending segments to the second mobile device, such as the smart phone 104 .
- the first and second mobile computing devices may then complete the uploading of data to the server 102 per method 1900 as described above.
- FIG. 25 illustrates an embodiment method 2500 for directing the transmission of data pending synchronization among computing devices which may be used in conjunction with method 1900 described above.
- a server 102 may direct a first mobile computing device, such as a laptop computer 106 , to upload a portion of the pending segments for which the first mobile computing device is riot assigned an upload responsibility.
- a user input indicating that a second mobile device, such as the smart phone 104 , which may have been assigned data segments to upload is lost may trigger the server 102 to direct the first mobile computing device, such as laptop computer 106 , to upload the portion of the pending segments originally assigned to the now lost smart phone 104 .
- the direction from the server 102 to the first mobile computing device may be in the form of a full upload request sent to the first mobile computing device. In this manner, the loss or destruction of a mobile computing device may not result in the loss of data segments pending server synchronization.
- the first and second mobile computing devices may then complete the uploading of data to the server 102 per method 1900 as described above.
- FIG. 26 illustrates an embodiment method 2600 for assigning and transmitting data pending synchronization among computing devices similar to method 1900 , with the addition of an upload status determination.
- the first mobile computing device may request the second mobile computing device's upload status from the server 102 .
- the first mobile computing device may receive second mobile computing device's upload status from the server 102 .
- the laptop computer 106 may receive a message from the server 102 indicating the smart phone 104 , has not uploaded.
- the first mobile computing device may use the information received in block 2604 to determine if the second mobile computing device has uploaded.
- FIG. 27 illustrates an embodiment method 2700 for optimizing delivery of e-mails.
- Embodiment method 2700 may be implemented on a first mobile computing device, such as a laptop computer 106 , which may synchronize a data set with a second mobile computing device, such as a smart phone 104 , and which may provide an assigned portion of the data set to a server 102 . While discussed in relation to three devices, method 2700 may be implemented among more than three devices.
- the first mobile computing device may establish a communication data link connection with the second mobile computing device.
- the communication data link connection may be any type of connection, as discussed above with reference to FIG. 1 .
- the first mobile computing device may synchronize an e-mail set between the first mobile computing device and the second mobile computing device.
- the e-mail set may be synchronized by any method, for example those discussed above with reference to FIGS. 15 , 16 , 17 , and 18 .
- the first mobile computing device may determine e-mails pending for synchronization with the server 102 .
- the first mobile computing device may assign an upload responsibility for each pending segment.
- An upload responsibility may be an assignment for a specific mobile computing device to transmit a specific pending e-mail to the server 102 .
- each pending e-mail may be assigned to a different mobile computing device for upload.
- the laptop computer 106 may assign half the e-mails to the smart phone 104 for upload, and the other half of the e-mails to itself for upload.
- the first mobile computing device may transmit the upload responsibilities for each pending e-mail to the second mobile computing device.
- the first mobile computing device may establish a communication data link connection with the server 102 .
- the communication data link connection may be any type of connection, as discussed above with reference to FIG. 1 .
- the first mobile computing device may request the server 102 provide the first mobile computing device with an e-mail thread status.
- An e-mail thread status may an indication of the time of receipt of the most recent e-mail in an e-mail thread or a listing of all e-mails in an e-mail thread resident on the server 102 .
- the first mobile computing device may receive a message from the server 102 providing the e-mail thread status. In this manner the first mobile computing device may be updated with the current status of each e-mail thread.
- the first mobile computing device may determine if more recent e-mails are in a thread using information in the e-mail thread status received in block 2716 .
- FIGS. 28A and 28B illustrate another embodiment method 2800 for managing interactions between a server 102 , a smart phone 104 , and a laptop computer 106 to optimize data delivery.
- the laptop computer 106 may perform operations of method 1900 described above with reference to FIG. 19 .
- the smart phone 104 and laptop computer 106 may establish a communication data link connection.
- the communication data link connection may be any connection suitable for transmitting data, such as those connections previously discussed previously in relation to FIG. 1 .
- the smart phone 104 and laptop computer 106 may synchronize a data set between themselves as accomplished in method 1900 .
- the smart phone 104 and laptop computer 106 may synchronized the pending segments and pending segment IDs as accomplished in method 1900 .
- the smart phone 104 may receive the upload responsibilities for each pending segment from the laptop 106 . In this transmission the smart phone 104 may receive an indication of both its own upload responsibilities and that of the laptop computer 106 . At blocks 2810 and 1920 the smart phone 104 and laptop computer 106 may terminate their communication data link connections with each other.
- the laptop computer 106 and server 102 may establish a communication data link connection.
- the communication data link connection may be any connection suitable for transmitting data, such as those connections previously discussed previously in relation to FIG. 1 .
- the smart phone 104 and the server 102 may establish a communication data link connection.
- the communication data link connection may be any connection suitable for transmitting data, such as those connections previously discussed previously in relation to FIG. 1 .
- the laptop computer 106 may transmit its assigned pending segments to the server 102 .
- the server 102 may receive the transmitted pending segments assigned to the laptop computer 106 .
- the smart phone 104 may transmit its assigned pending segments to the server 102 .
- the server 102 may receive the transmitted pending segments assigned to the smart phone 104 .
- the full set of pending segments may be assembled in the server 102 and the full synchronized data set may be resident on the server 102 , laptop 106 , and smart phone 104 .
- the laptop computer 106 and server 102 may terminate their communication data link connections with each other.
- the smart phone 104 and server 102 may terminate their communication data link connections with each other.
- the mobile device 2900 may include a processor 2902 coupled to internal memories 2904 and 2910 .
- Internal memories 2904 and 2910 may be volatile or non-volatile memories, and may also be secure and/or encrypted memories, or unsecure and/or unencrypted memories, or any combination thereof.
- the processor 2902 may also be coupled to a touch screen display 2906 , such as a resistive-sensing touch screen, capacitive-sensing touch screen infrared sensing touch screen, or the like. Additionally, the display of the mobile device 2900 need not have touch screen capability.
- the mobile device 2900 may have one or more antenna 2908 for sending and receiving electromagnetic radiation that may be connected to a wireless data link and/or cellular telephone transceiver 2916 coupled to the processor 2902 .
- the mobile device 2900 may also include physical buttons 2912 a and 2912 b for receiving user inputs.
- the mobile device 2900 may also include a power button 2918 for turning the mobile device 2900 on and off.
- the various embodiments may also be implemented on any of a variety of commercially available server devices, such as the server 3000 illustrated in FIG. 30 .
- a server 3000 typically includes a processor 3001 coupled to volatile memory 3002 and a large capacity nonvolatile memory, such as a disk drive 3003 .
- the server 3000 may also include a floppy disc drive, compact disc (CD) or DVD disc drive 3004 coupled to the processor 3001 .
- the server 3000 may also include network access ports 3006 coupled to the processor 3001 for establishing network interface connections with a network 3007 , such as a local area network coupled to other broadcast system computers and servers.
- a laptop computer 3110 will typically include a processor 3111 coupled to volatile memory 3112 and a large capacity nonvolatile memory, such as a disk drive 3113 of Flash memory.
- the computer 3110 may also include a floppy disc drive 3114 and a compact disc (CD) drive 3115 coupled to the processor 3111 .
- the computer device 3110 may also include a number of connector ports coupled to the processor 3111 for establishing data connections or receiving external memory devices, such as a USB or FireWire® connector sockets, or other network connection circuits for coupling the processor 3111 to a network.
- the computer housing includes the touchpad 3117 , the keyboard 3118 , and the display 3119 all coupled to the processor 3111 .
- Other configurations of the computing device may include a computer mouse or trackball coupled to the processor (e.g., via a USB input) as are well known, which may also be use in conjunction with the various embodiments.
- the processors 2902 , 3001 , and 3111 may be any programmable microprocessor, microcomputer or multiple processor chip or chips that can be configured by software instructions (applications) to perform a variety of functions, including the functions of the various embodiments described above. In some devices, multiple processors may be provided, such as one processor dedicated to wireless communication functions and one processor dedicated to running other applications. Typically, software applications may be stored in the internal memory 2904 , 2910 , 3002 , 3003 , 3112 , and 3113 before they are accessed and loaded into the processor 2902 , 3001 , and 3111 .
- the processor 2902 , 3001 , and 3111 may include internal memory sufficient to store the application software instructions.
- the internal memory may be a volatile or nonvolatile memory, such as flash memory, or a mixture of both.
- a general reference to memory refers to memory accessible by the processor 2902 , 3001 , and 3111 including internal memory or removable memory plugged into the device and memory within the processor 2902 , 3001 , and 3111 itself.
- DSP digital signal processor
- ASIC application specific integrated circuit
- FPGA field programmable gate array
- a general-purpose processor may be a microprocessor, but, in the alternative, the processor may be any conventional processor, controller, microcontroller, or state machine.
- a processor may also be implemented as a combination of computing devices, e.g., a combination of a DSP and a microprocessor, a plurality of microprocessors, one or more microprocessors in conjunction with a DSP core, or any other such configuration. Alternatively, some steps or methods may be performed by circuitry that is specific to a given function.
- the functions described may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the functions may be stored on or transmitted over as one or more instructions or code on a computer-readable medium.
- the steps of a method or algorithm disclosed herein may be embodied in a processor-executable software module which may reside on a tangible, non-transitory computer-readable storage medium. Tangible, non-transitory computer-readable storage media may be any available media that may be accessed by a computer.
- non-transitory computer-readable media may comprise RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other medium that may be used to store desired program code in the form of instructions or data, structures and that may be accessed by a computer.
- Disk and disc includes compact disc (CD), laser disc, optical disc, digital versatile disc (DVD), floppy disk, and blu-ray disc where disks usually reproduce data, magnetically, while discs reproduce data optically with lasers. Combinations of the above should also be included within the scope of non-transitory computer-readable media.
- the operations of a method or algorithm may reside as one or any combination or set of codes and/or instructions on a tangible, non-transitory machine readable medium and/or computer-readable medium, which may be incorporated into a computer program product.
Landscapes
- Engineering & Computer Science (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Information Transfer Between Computers (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Telephonic Communication Services (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
The various embodiments provide systems, devices, and methods which optimize the way in which data is delivered between devices a group of interconnected devices. In one embodiment a data set intended for multiple devices may be segmented and different portions of the data set may be provided to each device. The intended devices may then share their data set portions to recreate the complete data set on each device. In another embodiment, multiple devices each storing a complete data set may need to upload the complete data set to a single device. The multiple devices may assign upload responsibility for segments of the complete data set among each other, and the multiple devices may each upload their assigned segments to the single device. The single device may then combine the segments to recreate the complete data set.
Description
- This application is a divisional of U.S. patent application Ser. No. 13/342,092 entitled “Data Delivery Optimization” filed Jan. 1, 2012, the entire contents of which are incorporated herein by reference.
- The present invention relates generally to data transfer between computer devices and more particularly to methods and systems for optimizing the delivery of data to mobile devices.
- Today's busy information worker may have multiple mobile devices all capable of working with data. As an example a traveler may have two mobile devices, such as a smart phone and a laptop computer. The smart phone and laptop computer may both be capable of manipulating and presenting the traveler with the same data, such as e-mail. While the smart phone and laptop computer may be capable of performing the same tasks, under various circumstances the user may prefer to work with one device over the other. For example, travelers may find occasionally checking e-mail on a smart phone useful, but may feel more productive doing involved work or reading on a laptop computer due to the laptop computer's generally larger screen and larger keyboard.
- A common problem faced by many travelers involves synchronizing multiple mobile device data sets with a central database server when working in locations where all of the traveler's mobile devices may not have connectivity. As an example, a traveler may sync their laptop computer and smart phone with an e-mail exchange server prior to boarding an airplane, such that the laptop computer and smart phone are both up to date with respect to sent and received e-mail. The traveler may work on the airplane writing and answering e-mails on the laptop computer. Should the traveler write several e-mails on their laptop computer, which may be isolated from a network connection while in flight, those drafted e-mails may be held in a queue for transmission to the e-mail exchange server when a network connection becomes available. The traveler's laptop computer and smart phone would then be out of sync in terms of e-mail because the laptop computer would contain drafted e-mails which the smart phone does not. Upon landing, the traveler's smart phone may connect to a cellular data network and download the latest e-mail from the e-mail exchange server. The traveler may use their smart phone to write and answer e-mails in the airport, and the cellular data network connection may enable the smart phone and server to remain updated in terms of e-mail. However, the laptop computer will remain out of sync both in terms of both incoming and the outgoing e-mail until it establishes a network connection. The traveler may now be faced with a data, synchronization problem because the laptop computer, smart phone, and e-mail exchange server may all contain different e-mail data sets. This data synchronization problem may cause the traveler frustration and hinder traveler productivity.
- The systems, methods, and devices of the various embodiments optimize the way in which data is delivered between mobile computing devices. The various embodiments leverage the interconnected nature of modern computing devices to optimize the delivery of a data set between a group of interconnected devices. In one embodiment a data set intended for a user having multiple computing devices may be segmented by an e-mail server and different portions of the data set may be transmitted to each of the user's computing devices. The two or more mobile computing devices may then share their data, set portions with each other to recreate the complete data set on each computing device. In another embodiment, multiple computing devices each storing a complete data set may upload the complete data set to a single computing device (e.g., an e-mail server) by assigning upload responsibility for different segments of the complete data set to each device. Each of the multiple computing devices may upload their assigned segments to the single computing device. The single computing device may then combine the segments to recreate the complete data set.
- The accompanying drawings, which are incorporated herein and constitute part of this specification, illustrate exemplary embodiments of the invention, and together with the general description given above and the detailed description given below, serve to explain the features of the invention,
-
FIG. 1 is a communication system block diagram of a network suitable for use with various embodiments. -
FIG. 2 is a process flow diagram illustrating a first embodiment method for optimizing data delivery. -
FIG. 3 is a schematic diagram of example data set characteristics, -
FIG. 4 is a data structure diagram of example user preference settings. -
FIG. 5 is a data structure diagram of example data segment map elements. -
FIG. 6 is another process flow diagram illustrating a second embodiment method for optimizing data delivery. -
FIG. 7 is a data, structure diagram of example packet header information. -
FIG. 8 is another process flow diagram illustrating a third embodiment method for optimizing data delivery. -
FIG. 9 is another process flow diagram illustrating a fourth embodiment method for optimizing data delivery. -
FIG. 10 is another process flow diagram illustrating a fifth embodiment method for optimizing data delivery. -
FIG. 11 is another process flow diagram illustrating a sixth embodiment method for optimizing data delivery. -
FIG. 12 is another process flow diagram illustrating a seventh embodiment method for optimizing data delivery. -
FIGS. 13A and 13B are process flow diagrams illustrating an embodiment method for managing interactions between computing devices to optimize data delivery. -
FIG. 14 is another process flow diagram illustrating an eighth embodiment method for optimizing data delivery. -
FIG. 15 is a process flow diagram illustrating an embodiment method for synchronizing the transmission of data segments. -
FIG. 16 is a process flow diagram illustrating an embodiment method for synchronizing the receipt of data, segments. -
FIG. 17 is a process flow diagram illustrating a first embodiment method for synchronizing a data set. -
FIG. 18 is another process flow diagram illustrating a second embodiment method for synchronizing a data set. -
FIG. 19 is a process flow diagram illustrating an embodiment method for assigning and transmitting data pending synchronization among computing devices. -
FIG. 20 is a process flow diagram illustrating a first embodiment method for assigning upload responsibility. -
FIG. 21 is another process flow diagram illustrating a second embodiment method for assigning upload responsibility. -
FIG. 22 is another process flow diagram illustrating a third embodiment method for assigning upload responsibility. -
FIG. 23 is another process flow diagram illustrating a fourth embodiment method for assigning upload responsibility. -
FIG. 24 is another process flow diagram illustrating a fifth embodiment method for assigning upload responsibility. -
FIG. 25 is a process flow diagram illustrating an embodiment method for directing the transmission of data pending synchronization among computing devices. -
FIG. 26 is another process flow diagram illustrating another embodiment method for assigning and transmitting data pending synchronization among computing devices. -
FIG. 27 is a process flow diagram illustrating an embodiment method for optimizing e-mail delivery. -
FIGS. 28A and 28B are additional process flow diagrams illustrating another embodiment method for managing interactions between computing devices to optimize data delivery. -
FIG. 29 is a component diagram of an example mobile computing device suitable for use with the various embodiments. -
FIG. 30 is a component diagram of an example server suitable for use with the various embodiments. -
FIG. 31 is a component diagram of another example mobile computing device suitable for use with the various embodiments. - The various embodiments will be described in detail with reference to the accompanying drawings. Wherever possible, the same reference numbers will be used throughout the drawings to refer to the same or like parts. References made to particular examples and implementations are for illustrative purposes, and are not intended to limit the scope of the invention or the claims.
- The word “exemplary” is used herein to mean “serving as an example, instance, or illustration.” Any implementation described herein as “exemplary” is not necessarily to be construed as preferred or advantageous over other implementations.
- As used herein, the terms “mobile device” and “mobile computing device” refer to any one or all of cellular telephones, tablet computers, personal data assistants (PDAs), palm-top computers, notebook computers, laptop computers, personal computers, wireless electronic mail receivers and cellular telephone receivers (e.g., the Blackberry® and Treo® devices), multimedia Internet enabled cellular telephones (e.g., Blackberry Storm®), multimedia enabled smart phones (e.g., Android® and Apple iPhone®), and similar electronic devices that include a programmable processor, memory, a communication transceiver, and a display.
- The various embodiments are described herein using the example of a traveler working with two mobile computing devices which synchronize data with a central database server (i.e., an e-mail server). This example is useful for describing the various components and functionality of the embodiment computing devices, systems and methods. However, the embodiments and the scope of the claims are not limited to such a configuration and application unless specifically recited. Describing the embodiments in terms of other potential applications would be unnecessary and repetitive. Thus, the term traveler is used herein to refer generally to any computing device user to which the embodiments could be applied, and is not intended to limit the scope of the claims unless specifically recited.
- Similarly, the term e-mail is used herein to refer generally to any and all data to which the embodiments could be applied, including a variety of word, spread sheet, and multimedia files, and is not intended to limit the scope of the claims unless specifically recited.
- The various embodiments are described herein using the term server. The term server is used to refer to any computing device capable of functioning as a server, such as a master exchange server, mail server, document server, or any other type of server. A server may be a dedicated computing device or a computing device running an application which may cause the computing device to operate as a server. A server application may be a full function server application, or a light or secondary server application that is configured to provide synchronization services among the dynamic databases on mobile computing devices. A light server or secondary server may be a slimmed-down version of server type functionality that can be implemented on a mobile computing device thereby enabling it to function as an Internet server (e.g., an enterprise e-mail server) only to the extent necessary to provide the functionality described herein.
- In overview, the methods, systems, and devices of the various embodiments optimize the way in which data is delivered between computing devices. The various embodiments leverage the interconnected nature of modern computing devices to optimize the delivery of a data set between a group of interconnected computing devices. In one embodiment a data set intended for multiple mobile computing devices may be segmented and different portions of the data set may be provided to each mobile computing device. The intended mobile computing devices may then share their data set portions to recreate the complete data set on each mobile computing device. In another embodiment, multiple mobile computing devices each storing a complete data set may need to upload the complete data set to a single computing device. The multiple mobile computing devices may assign upload responsibility for segments of the complete data set among each other, and the multiple mobile computing devices may each upload their assigned segments to the single computing device. The single computing device may then combine the segments to recreate the complete data set.
- In another embodiment a user's two or more mobile computing devices may be configured to recognize when one of the mobile computing devices is out of synchronization with the other in terms of a particular data set. If such a situation is detected, the mobile computing devices may accomplish an update or synchronization so that both mobile computing devices reflect a common data set. In another embodiment a mobile computing device may validate itself to other mobile computing devices so that synchronization is only accomplished between two mobile computing devices authorized by the user. In another embodiment, mobile computing devices may be configured to receive temporary data generated in one mobile computing device that is pending synchronization with another computing device, such as a server. In another embodiment, the mobile computing devices may be configured to translate data between applications to match the application format implemented on each mobile computing device. In a further embodiment, alternating or load-balancing of data delivery may be accomplished to optimize the overall speed or cost of data delivery. In a further embodiment conditional data delivery capabilities implemented on one or more of the mobile computing devices may de-conflict data delivery occurring simultaneously from multiple parties or multiple party e-mail threads.
-
FIG. 1 illustrates anetwork system 100 suitable for use with the various embodiments. Thenetwork system 100 may include three devices, aserver 102, and two mobile computing devices, asmart phone 104 and alaptop computer 106. While the various embodiments are particularly useful in relation to aserver 102,smart phone 104, andlaptop computer 106, the embodiments are not limited to these devices and may be implemented in any device with no changes to the methods. Additionally, while the various embodiments are discussed in relation to interactions between three devices, the embodiments are not limited to three devices, and the methods may be implemented in network systems comprised of an unlimited number of devices. - The
server 102 may be a master exchange server, mail server, document server, or any other type of central database server. Theserver 102 and thesmart phone 104 may exchange data with each other via acommunication pathway 108. Thelaptop computer 106 and theserver 102 may exchange data with each other viacommunication pathway 110. Thelaptop computer 106 and thesmart phone 104 may communicate with each other via thecommunication pathway 112. Thecommunication pathways communication pathways - As an example, the
communication pathways server 102 may be wireless connections, such as a wireless Wi-Fi connection between thesmart phone 104 and/or thelaptop computer 106 and a Wi-Fi access point 118. The Wi-Fi access point 118 may connect to theInternet 114. Theserver 102 may be connected to theInternet 114, and in this manner data may be transmitted from/to thesmart phone 104 and/or thelaptop computer 106 via the Wi-Fi access point 118, and over theInternet 114 to/from theserver 102 by methods well known in the art. As additional examples,communication pathways smart phone 104 and/or thelaptop computer 106 may transmit data wirelessly to a cellular network cell tower orbase station 116 which may connect to theInternet 114. Theserver 102 may be connected to theInternet 114, and in this manner data may be transmitted from/to thesmart phone 104 and/or thelaptop computer 106 via the wireless cellular tower orbase station 116, and over theInternet 114 to/from theserver 102 by methods well known in the art. As a further example, thecommunication pathway 110 between thelaptop computer 106 and theserver 102 may be a wired local area network connection, such as anEthernet connection 126. - As an example, the
communication pathway 112 between thesmart phone 104 and thelaptop 106 may be a wireless data link, such as aBlueTooth connection 120. As an additional example, thecommunication pathway 112 between thesmart phone 104 and thelaptop computer 106 may be a wireless Wi-Fi data link via a Wi-Fi access point 122, In this manner data may be transmitted from/to thesmart phone 104 and/or thelaptop computer 106 via the Wi-Fi access point 122 by methods well known in the art. As an additional example, thecommunication pathway 112 may also be a wired connection between thelaptop computer 106 andsmart phone 104, such as aUSB cable 124 connected between the devices. - The
communication pathways communication pathways communication pathways -
FIG. 2 illustrates anembodiment method 200 for optimizing data delivery among three or more computing devices. As an example, themethod 200 may be implemented between aserver 102 and two or more mobile computing devices, such as asmart phone 104 andlaptop computer 106. While discussed in relation to aserver 102,smart phone 104, andlaptop computer 106, themethod 200 may be implemented in any device with the ability to act as a data server for other devices. Atblock 202 theserver 102 may identify a data set to be communicated to the mobile computing devices. A data set may include any group of data, such as content objects, e-mails, lines of e-mails, text, blocks of text, web pages, parts of web pages, zip files, spread sheets, documents, portions of documents, files, and/or parts of files. Atblock 204 theserver 102 may determine characteristics of the data set. Data set characteristics may include various characteristics discussed further below. Atblock 206 theserver 102 may separate the data set into segments. A segment may include any grouping of the data within the data set, so the separation of the data set atblock 206 may be performed based on the data set characteristics determined inblock 204, or the data set may be separated according to pre-determined parameters, such as a set segment size. Atblock 208 theserver 102 may assign an identification (“ID”) to each segment. This segment ID may be a unique number, name, or identification element generated by theserver 102. Additionally a segment ID may contain or provide information about the segment, such as information regarding the segment contents, the time of creation of the segment, theserver 102, or the segment size. Atblock 210 theserver 102 may write the segment ID into each segment. The segment ID may be written into data representing the entire segment, or may be written into each data element comprising the individual segment. - At
block 212 theserver 102 may determine the total number of segments created from the data set. Inblock 214 theserver 102 may determine the available mobile computing devices. Available mobile computing devices may be asmart phone 104 and alaptop computer 106, for example, which may be connected to theserver 102. Alternatively, available mobile computing devices may be mobile computing devices that are registered with theserver 102, but that may not currently be connected to theserver 102. Atdetermination block 216, the server may determine whether the mobile computing devices are synchronization enabled. A synchronization enabled mobile computing device may be a mobile computing device that is capable of synchronizing/exchanging information with another mobile computing device. For example, a synchronization enabledsmart phone 104 may be able to synchronize its data set with a data set of a synchronization enabledlaptop computer 106. If the available mobile computing devices are not synchronization enabled (i.e., determination block 216=“No”), inblock 218 theserver 102 may update the mobile computing devices independently with the entire data set. - If the available mobile computing devices are synchronization enabled (i.e., determination block 216=“Yes”), at
block 220 theserver 102 may determine the geographic location of the mobile computing devices. Theserver 102 may determine the geographic location of the mobile computing devices by global positioning system (GPS) information provided to theserver 102 by the mobile computing devices, by reference to information about the connections through which the mobile computing devices may be communicating to the server 102 (i.e., which cell network nodes the mobile computing devices may be using), through a mobile computing device user input identifying the location of each mobile computing device, or other methods. Atdetermination block 222 the server may determine if the mobile computing devices are collocated. As examples, collocation may be determined by comparing mobile computing device UPS information, cellular network information, or user inputs. As an example, theserver 102 may determine two mobile computing devices are more than a distance threshold setting apart based on UPS information. The distance threshold setting may be a maximum distance between devices defining collocation. If the mobile computing devices are not collocated. (i.e., determination block 222=“No”), atblock 218 theserver 102 may update the mobile computing devices independently with the entire data set. - If the mobile computing devices are collocated (i.e., determination block 222=“Yes”), at
block 224 theserver 102 may determine the mobile computing device connection bandwidths. Alternatively, theserver 102 may determine an estimated mobile computing device connection bandwidth for each mobile computing device based on the type of connection the mobile computing device may be using to communicate with theserver 102. Atblock 226 theserver 102 may determine user preference settings. User preference settings may be related to connections or devices to use for updates. User preference settings are discussed below. - At
block 228 theserver 102, may assign data segments to each mobile computing device. The assignments of data segments to each mobile computing device may be made based on various considerations discussed below. Atblock 230, the server may generate a data segment map identifying each data segment and the mobile computing device to which each segment may be assigned or other elements as discussed below. Atblock 232 theserver 102 may write data segment assignment information into each data segment. The data segment assignment information may be written into data representing the entire segment, or may be written into each data element comprising the individual segment. Atblock 234 theserver 102 may transmit the data segments to their assigned mobile computing devices. In this manner each mobile computing device may receive different data segments. As an example, alaptop computer 106 may receive a first portion of the data segments and asmart phone 104 may receive a second portion of the data segments, such that the combination of the first and second portions will yield the entire data set. Atblock 236 theserver 102 may transmit the data segment map to each mobile computing device, in this manner each mobile computing device may receive a copy of the entire data segment map. The data segment map may allow the individual mobile computing devices to determine the contents or the original data set even though each mobile computing device may not receive all the segments of the original data set from the server. - At
block 238 theserver 102 may store copies of the transmitted data segments and atblock 240 theserver 102 may store a copy of the data segment map. In this manner, theserver 102 may be able to support future single device sessions, or retransmission of assigned data segments should a device connection fail, -
FIG. 3 is a schematic diagram illustrating potentialdata set characteristics 302. Data setcharacteristics 302 may include the calculatedtotal size 304 of the data set. Thetotal size 304 may be calculated in bytes or any other unit representative of thetotal size 304 of the data set. Data setcharacteristics 306 may also include the number ofobjects 206, type ofobjects 308,object priority 310, andindividual object size 312. -
FIG. 4 is a data structure diagram illustrating potential elements ofuser preference settings 402 which may be stored in a memory of aserver 102.User preference settings 402 may include a listing of devices to update 404, an order ofdevice updates 406, aconnection preference 408, aspeed preference 410, a data limit for adevice 412, or adata preference 414. As an example, a listing of devices to update 404 may identify a selected number of a user's mobile computing devices, enabling a user to control which devices are updated. As an example, an order ofdevice updates 406 may direct aserver 102 to update the selected devices in a particular order or priority sequence. As an example, aconnection preference 408 may direct aserver 102 to use a Wi-Fi connection rather than a CDMA connection. Alternatively, aconnection preference 408 may direct aserver 102 to use the least expensive connection among a group of available connections. As an example, aspeed preference 410 may direct aserver 102 to use the fastest connections available. As an example, a data limit for adevice 412 may set a maximum amount of data, to transmit from theserver 102 to a device. As an example, adata preference 414 may direct aserver 102 to assign a specific data type, such as e-mail, to a specific mobile device, such as asmart phone 104. -
FIG. 5 is a data structure diagram illustrating potential datasegment map elements 502. Datasegment map elements 502 may include the total number ofsegments 504, thesegment IDs 506, data setcharacteristics 508,segment device assignments 510, segment size 512, a segmentcreation time stamp 514, and aserver validation key 516. The datasegment map elements 502 may be used individually or in combination by theserver 102 or mobile devices to aid in recreating the data set, identifying the data set, or communicating between any of theserver 102 and mobile devices. Specifically, a segmentcreation time stamp 514 may allow mobile devices to ensure they have the most up to date segments. Aserver validation key 516 may act as a trust/verification tool for mobile devices when communicating together and act as a security feature. Theserver validation key 516 may be provided by theserver 102 as a way to validate the segments and/or mobile computing device to other mobile computing devices. Theserver validation key 516 may be an encrypted key provided from theserver 102. A mobile computing device receiving aserver validation key 516 from a second mobile computing device may be able to use theserve validation key 516 to confirm that the information on the second mobile computing device actually originated at theserver 102. -
FIG. 6 illustrates anembodiment method 600 for optimizing data delivery similar tomethod 200 described above with reference toFIG. 2 , except that atblock 602 theserver 102 may create a packet for each segment. Atblock 604 theserver 102 may write header information into each packet. Header information may include various types of information as will be discussed further below. Atblock 214 theserver 102 may determine available mobile computing devices. Atblock 606 theserver 102 may assign packets to each mobile computing device in a manner similar to how data segments were assigned inblock 228 discussed above. Atblock 230 theserver 102 may generate a data segment map. Atblock 608 theserver 102 may transmit the packets to their assigned mobile computing devices. Atblock 236 theserver 102 may transmit the data segment map to the mobile computing devices. -
FIG. 7 is a data structure diagram illustrating potentialpacket header information 702.Packet header information 702 may include thesegment ID 704, a masterdata set ID 706, aserver ID 708, a segmentcreation time stamp 710,reassembly instructions 712, and a packetcreation time stamp 714. A masterdata set ID 706 may be a unique identification created by theserver 102 to identify the overall data set from which the segments were created. Theserver ID 708 may be a unique identification associated with theserver 102 that created the packet. Thereassembly instructions 712 may be instructions controlling the order in which packets are intended to be unpacked or the placement in the overall data, set of the segment contained in the packet. The packetcreation time stamp 714 may be an indication of the time at which the packet was created. -
FIG. 8 illustrates anembodiment method 800 for optimizing data delivery which may be used in conjunction withmethod 200 described above with reference toFIG. 2 . A discussed above inblock 224, theserver 102 may determine the mobile computing device connection bandwidths for each mobile computing device. Atblock 802, theserver 102 may determine the total available bandwidth for all the mobile computing devices. As an example, theserver 102 may sum the individual mobile computing device connection bandwidths to determine the total available bandwidth for all the mobile computing devices. Atblock 804 theserver 102 may assign data segments to each mobile computing device in proportion to each mobile computing device's connection bandwidth as a percentage of the total available bandwidth. As an example a mobile computing device with a connection to the server representing 70% of the total available bandwidth between the two mobile computing devices may be assigned 70% of the data segments, while a mobile computing device with a connection to the server representing 30% of the total available bandwidth may be assigned 30% of the data segments. Theserver 102 may then transmit the data segments to the respective mobile computing devices as permethods -
FIG. 9 illustrates anembodiment method 900 for optimizing data delivery which may be used in conjunction withmethod 200 described above with reference toFIG. 2 . As discussed above inblock 224 theserver 102 may determine the mobile computing device connection bandwidths. Atblock 902 theserver 102 may determine data segment assignments that will result in the shortest estimated download time. Atblock 904 theserver 102 may assign the data segments to each mobile computing device based on the determined shortest download time. Theserver 102 may then transmit the data segments to the respective mobile computing devices as permethods -
FIG. 10 illustrates anembodiment method 1000 for optimizing data delivery which may be used in conjunction withmethod 200 described above with reference toFIG. 2 . Atblock 1002 theserver 102 may determine the mobile computing device connection types. As an example, a connection between theserver 102 and asmart phone 104 may be a 3G connection, and a connection between theserver 102 and alaptop computer 106 may be a Wi-Fi connection. Atblock 1004 theserver 102 may determine a cost associated with each mobile computing device connection. As an example, theserver 102 may be provided information that a 3G connection results in a fee being charged to a user for data transmitted over the connection and that no fee is charged for data transmitted over a Wi-Fi connection. Atblock 1006 theserver 102 may determine data segment assignments that will result in the lowest total download cost. Atblock 1008 theserver 102 may assign data, segments to each mobile computing device based on the determined lowest total download cost. In this manner, aserver 102 implementingmethod 1000 may operate in a cost saving mode. Theserver 102 may then transmit the data segments to the respective mobile computing devices as permethods -
FIG. 11 illustrates anembodiment method 1100 for optimizing data delivery similar tomethods FIGS. 2 and 8 , except that data segmentation may address changes in mobile computing device connection bandwidth. As discussed above, atblock 234 theserver 102 may transmit the data segments to the assigned mobile computing devices. Atdetermination block 1102 theserver 102 may determine if a bandwidth change in any mobile computing device connection has occurred. If a bandwidth change has occurred (i.e.,determination block 1102=“Yes”), atblock 224 theserver 102 may again determine the mobile computing device connection bandwidths. Atblock 802 theserver 102 may again determine the total available bandwidth. Atblock 804 theserver 102 may again assign data segments to each mobile computing device in proportion to each mobile computing device's connection bandwidth as a percentage of total available bandwidth, and atblock 234 theserver 102 may transmit the data segments to their now potentially newly assigned mobile computing devices. In this manner, theserver 102 may continually adjust the assignment of data segments as bandwidth changes during data segment transmission. - If the bandwidth does not change in any mobile computing device (i.e.,
determination block 1102=“No”), atblock 1104 theserver 102 may generate a data segment map. In this manner, the data segment map may not he generated until the data, segment assignments are finalized. Atblock 236, theserver 102 may transmit the data segment map to the mobile devices. -
FIG. 12 illustrates anembodiment method 1200 for optimizing data delivery similar tomethod 1100 described above with reference toFIG. 11 , except that data segmentation may compensate for the loss of a mobile computing device connection. As discussed above, atblock 234 theserver 102 may transmit data segments to the assigned mobile computing devices. Atdetermination block 1202 the server may determine if a mobile computing device connection is lost. If a mobile computing device connection is lost (i.e.,determination block 1202=“Yes”), atblock 1204 theserver 102 may transmit a full download query to the remaining mobile computing devices. As an example, a full download query may be an indication to an application running on a mobile computing device to prompt the user to approve or disapprove the full download of the entire data set. If a mobile computing device connection is not lost (i.e.,determination block 1202=“No”), atblock 1104 theserver 102 may generate a data segment map and at block 235 theserver 102 may transmit the data segment map to the mobile computing devices. Theserver 102 may then transmit the data segments to the respective mobile computing devices as permethods - At
determination block 1206 theserver 102 may determine whether a full download indication is received. As an example, a full download indication may be a message received from an application running on a mobile computing device indicating that the user requests a full download of the entire data set. If a full download indication is received (i.e.,determination block 1206=“Yes”), atblock 1208 the server may transmit the entire data set to the remaining connected mobile computing devices. If a full download indication is not received (i.e.,determination block 1206=“No”), atblock 1104 theserver 102 may generate a data segment map and at block 235 theserver 102 may transmit the data segment map to the mobile computing devices. Theserver 102 may then transmit the data segments to the respective mobile computing devices as permethods -
FIGS. 13A and 13B illustrate anotherembodiment method 1300 for managing interactions between aserver 102, asmart phone 104, and alaptop computer 106 to optimize data delivery. Atblocks server 102 may perform operations ofmethod 200 described above with reference toFIG. 2 . Atblock 1302 and block 1304 theserver 102 and thesmart phone 104 may establish a data communication connection. The connection may be any connection suitable for transmitting data, such as those connections discussed previously in relation toFIG. 1 . Atblock 1306 and block 1308 theserver 102 andlaptop computer 106 may establish a data communication connection. The connection may be any connection suitable for transmitting data, such as those connections discussed previously in relation toFIG. 1 . Atblocks server 102 may perform operations ofmethod 200 described above with reference toFIG. 2 . - At
block 1310 theserver 102 may transmit the assigned data segments to thesmart phone 104. Atblock 1312 thesmart phone 104 may receive its assigned data segments. Atblock 1314 theserver 102 may transmit assigned data segments assigned to thelaptop computer 106. Atblock 1316 thelaptop computer 106 may receive its assigned data segments. Atblock 1318 theserver 102 may transmit the data, segment map to thesmart phone 104. Atblock 1320 thesmart phone 104 may receive the data segment map. Atblock 1322 theserver 102 may transmit the data segment map to thelaptop computer 106. Atblock 1324 thelaptop computer 106 may receive the data, segment map. - At
block 1326 and block 1328 thesmart phone 104 and thelaptop computer 106 may establish a data communication connection with each other. The connection may be any connection suitable for transmitting data, such as those connections discussed previously in relation toFIG. 1 . Atblock 1330 thesmart phone 104 may determine what data segments to transmit to thelaptop computer 106. The determination may be based at least in part on information in the data segment map received by thesmart phone 104. Atblock 1332 thelaptop computer 106 may select data segments to transmit to thesmart phone 104. The selection may be based at least in part on the information in the data segment map received by thelaptop computer 106. Atblock 1334 thesmart phone 104 may transmit selected data segments to thelaptop computer 106 and atblock 1336 thelaptop computer 106 may receive the data segments. Atblock 1338 thelaptop computer 106 may transmit selected data segments to thesmart phone 104, and atblock 1340 thesmart phone 104 may receive the data segments. In this manner, the full data set resident on theserver 102, may be assembled in both thesmart phone 104 and thelaptop computer 106. -
FIG. 14 illustrates anembodiment method 1400 for optimizing data delivery which may be used in conjunction withmethod 200 describe above with reference toFIG. 2 . Atblock 1402 theserver 102 may determine the mobile computing device types with which theserver 102 has established connections. As an example, theserver 102 may determine that the mobile computing devices are two different types of devices, i.e. asmart phone 104, and alaptop computer 106. Atblock 1404 theserver 102 may determine the amount of each data segment to send based on the mobile computing device types. In this manner the server may determine a portion of the data to be sent to each mobile computing device based on the type of device. As an example, asmart phone 104 may only be able to receive and display the first three lines of an e-mail message. When theserver 102 determines that thesmart phone 104 is connected, theserver 102 may determine that only a limited amount of the data segment (i.e., the first three lines of the e-mail message) should be sent to thesmart phone 104. Inblock 228 theserver 102 may assign data segments to each mobile device. Inblock 1406 theserver 102 may transmit the appropriate amount of each of the data segments assigned to the mobile computing devices based on the determined device capabilities. In this manner only a portion of the data segment (i.e., the determined amount) may be transmitted to a mobile computing device. -
FIG. 15 illustrates anembodiment method 1500 for synchronizing the transmission of data segments from a first computing device to a second computing device. As an example, themethod 1500 may be implemented between two mobile computing devices, such as asmart phone 104 and alaptop computer 106. While discussed in relation to two mobile computing devices (e.g., thesmart phone 104 and the laptop computer 106) themethod 1500 may be implemented among any number of computing devices, mobile or otherwise. In block 1502 a first mobile computing device, such as asmart phone 104, may detect an available data communication link to another mobile computing device, such as alaptop computer 106. The first mobile computing device may detect the availability of the data link to the second mobile computing device through a previously established connection such as a Bluetooth connection. Atdetermination block 1504 the first mobile computing device may determine if it has a data segment for the second mobile computing device. As an example, the determination atblock 1504 may be made by comparing a device ID for thelaptop computer 106 to a data segment map resident in a memory of thesmart phone 104 which may indicate whether a data segment should be provided to thelaptop computer 106. If the first mobile computing device does not have a data segment for the second mobile computing device (i.e.,determination block 1504=“No”), the first mobile computing device may return to block 1502 to await detection of another mobile computing device. - If there is a data segment for the second mobile computing device (i.e.,
determination block 1504=“Yes”), in an optional embodiment atblock 1506 the first mobile computing device may determine the available mobile device data communication link connections to the second mobile computing device. Mobile computing devices may have the ability to establish more than one data communication link, and more than one data communication link may be established between the first and second mobile computing devices. As an example thesmart phone 104 may determine there is both a connection and a BlueTooth connection with thelaptop computer 106. Atblock 1508, in this optional embodiment, the first mobile computing device may select an available mobile device data communication link connection established between the first and second mobile computing device. As an example, atblock 1508 thesmart phone 104 may select the BlueTooth connection. Selections of communication data link connections may be made in any manner, and may be made based on considerations similar to those discussed above in relation toFIGS. 8 , 9, and 10, such as cost or speed. - At
block 1510 the first mobile computing device may transmit a data waiting message to the second mobile computing device. The data waiting message may alert the second device that the first device has a data segment intended for a second device, Additionally, a data waiting message may include a listing of data segments intended for the second mobile computing device, information about a data segment such as its size, creation date, or content type, or any other information related to a data segment intended for the second mobile computing device. Atblock 1512 the first mobile computing device may receive a validation request from the second mobile computing device. The validation request may be a request from the second mobile computing device in response to the data waiting message. The validation request may be a request for information which may used by the second mobile device to validate the authenticity of the first mobile computing device or to validate the authenticity of the data resident on the first mobile computing device. As an example, the validation request may request the first mobile computing device provide the identity of a server from which the data segment originated. The second mobile computing device may use the identity of the server to validate that the segment originated on an authorized server, and thus a validation request may prevent the unauthorized parties from providing or receiving data. - At
block 1514 the first mobile computing device may transmit a data segment map to the second mobile computing device in response to receiving the validation request. The data segment map may contain information to be used by the second mobile computing device to validate the authenticity of the first mobile computing device or to validate the authenticity of the data resident on the first mobile computing device. As an example, the data segment map may contain a server ID to identify the server from which the data segment originated. The second mobile computing device may user the server ID to validate the first mobile computing device (e.g., by comparing the server ID to a stored list of authorized server IDs). Atdetermination block 1516 the first mobile computing device may determine if a data segment transmit request is received. If a data transmit request is not received (i.e.,determination block 1516=“No”), the first mobile computing device may return to block 1502 to await detection of another mobile computing device. If a data transmit request is received (i.e.,determination block 1516=“Yes”), atblock 1518 the first mobile computing device may transmit the data segment to the second mobile computing device. -
FIG. 16 illustrates anembodiment method 1600 for synchronizing the receipt of data segments from a first computing device at a second computing device. As an example, themethod 1600 may be implemented by a second mobile computing device operating in conjunction with a first mobile computingdevice implementing method 1500. As an example, themethod 1600 may be implemented between two mobile computing devices, such as first mobile computing device, asmart phone 104 and a second mobile computing device, alaptop computer 106. While discussed in relation to two mobile computing devices (laptop computer 106 and smart phone 104) themethod 1600 may be implemented among any number of computing devices, mobile or otherwise. At block 1602 a second mobile computing device, such aslaptop computer 106, may receive a data waiting message from a first mobile computing device, such assmart phone 104. As discussed above, the data waiting message may be a message alerting the second device that the first device has a data segment intended for the second mobile computing device. Additionally, a data waiting message may include a listing of data segments intended for the second mobile computing device, information about a data segment such as its size, creation date, or content type, or any other information related to a data segment intended for the second mobile computing device. - At
block 1604 the second mobile computing device may transmit a validation request to the first mobile computing device. The validation request may be sent from the second mobile computing device in response to the second mobile computing device receiving the data waiting message. As discussed above, the validation request may be a request for information which may used by the second mobile device to validate the authenticity of the first mobile computing device or to validate the authenticity of the data resident on the first mobile computing device. As an example, the validation request may be a message sent from thelaptop computer 106 to thesmart phone 104 requesting thesmart phone 104 provide a server ID. Atblock 1608 the second mobile computing device may receive a data segment map from the first mobile computing device which may contain a server ID. - At
determination block 1610 the second mobile computing device may determine if the server ID is valid, such as by comparing the server ID in the data segment map to a server ID stored in memory. Other methods may be used to validate the server ID, including the use of encrypted hash techniques well known in the computer arts. If the server ID is not validated (i.e.,determination block 1610=“No”), atblock 1620 the method may end. In this manner, invalid and/or untrusted data may riot be received by the second mobile computing device. If the server ID is valid (i.e.,determination block 1610=“Yes”), atblock 1612 the second mobile computing device may compare the data segment map to a current data set resident on the second mobile computing device to determine is any data segments on the first mobile computing device contain data not resident on the second mobile computing device. As an example, thelaptop computer 106 may compare the data segment creation time stamps to determine if the data set on thelaptop computer 106 is newer than the data set defined by the data segment map. - At
determination block 1614 the second mobile computing device may determine if the data segment is required. This determination may be made using the results of the comparison of the data segment to the current data set performed inblock 1612 to determine if any data segments on the first mobile computing device contain data not resident on the second mobile computing device. Required data segments may include data not resident on the second mobile computing device or data newer than the data resident on the second mobile computing device. If the data segment is not required (i.e.,determination block 1614=“No”), atblock 1620 themethod 1600 may end. As an example, an outdated data segment may not be required. If the data segment is required (i.e.,determination block 1614=“Yes”), atblock 1616 the second mobile computing device may transmit a data segment transmit request to the first mobile computing device requesting the transmission of the data segment. Atblock 1618 the second mobile computing device may receive the data segment from the first mobile computing device. Atblock 1620 themethod 1600 may end. -
FIG. 17 illustrates anembodiment method 1700 for synchronizing a data set between a first computing device and a second computing device. As an example, themethod 1700 may be implemented between two mobile computing devices, such as asmart phone 104 and alaptop computer 106. While discussed in relation to two mobile computing devices (smart phone 104 and laptop computer 106) themethod 1700 may be implemented among any number of computing devices, mobile or otherwise. Atblock 1702 the first mobile computing device, such aslaptop computer 106, may mark data pending server synchronization as temporary. Data pending server synchronization may be data which has been altered in some way since the last data synchronization between the first mobile computing device and a server occurred. Data pending server synchronization may be marked temporary in any manner, including by information written into a file header, a tag added to the data or an index or a pointer file, or by changing a data ID. At block 1704 the first mobile computing device may transmit a data, listing to the second mobile computing device, such as thesmart phone 104. A data listing may be a listing of data resident on the first mobile computing device, such as an index. The data listing may include an identification of data marked as temporary inblock 1702. As an example thelaptop computer 106 may transmit the data listing to asmart phone 104 over a communication data link connection established between thelaptop computer 106 and thesmart phone 104. - At
block 1706 the first mobile computing device may receive a data set request from the second mobile computing device. A data set request may identify all or a portion of the data on the data listing which may be required by the second mobile computing device. Additionally, the data, set request may include information about the application format for data required by the second mobile computing device. Atblock 1708 the first mobile computing device may identify the data set required by the second mobile computing device based on the data listing received atblock 1706. Identification of the data set may include identifying an application format required by the second mobile computing device. Atblock 1710 first mobile computing device may translate the data set between application formats. As an example, the data stored on thelaptop 106 may be in an application format only suitable for use on thelaptop 106. To make use of the data, thesmart phone 104 may require the data be translated into an application format suitable for use on thesmart phone 104. Therefore, thelaptop 106 may translate the data set from an application format for thelaptop 106 to an application format for thesmart phone 104. Atblock 1712, the first mobile computing device may transmit the now translated data set to the second mobile computing device. As an example, thelaptop computer 106 may transmit the translated data set to thesmart phone 104 over a communication data link connection established between thelaptop computer 106 and thesmart phone 104. -
FIG. 18 illustrates anembodiment method 1800 for synchronizing a data set between a first computing device and a second computing device. As an example, themethod 1800 may be implemented by a second mobile computing device operating in conjunction with a first mobile computingdevice implementing method 1700. As an example, themethod 1800 may be implemented between two mobile computing devices, such as first mobile computing device, alaptop computer 106 and a second mobile computing device, asmart phone 104. While discussed in relation to two mobile computing devices (laptop computer 106 and smart phone 104) themethod 1800 may be implemented among any number of computing devices, mobile or otherwise. At block 1802 a second mobile computing device, such as thesmart phone 104, may receive a data listing from a first mobile computing device, such as thelaptop 106. As discussed above, a data listing may be a listing of data resident on the first mobile computing device and may include an identification of data marked as temporary. - At
block 1804 the second mobile computing device may compare the data listing to data resident on the second mobile computing device. Atdetermination block 1806 the second mobile computing device may determine if it requires data on the data listing. This determination may be made using the results of the comparison of the data listing to the data resident on the second mobile computing device performed inblock 1804. Required data may include data not resident on the second mobile computing device, data newer than the data resident on the second mobile computing device, or data marked as temporary. If data on the data listing is not required (i.e.,determination block 1806=“No”), atblock 1808 themethod 1800 may end. - If data on the data listing is required (i.e.,
determination block 1806=“Yes”), atblock 1810 the second mobile computing device may transmit a data set request to the first mobile computing device. As discussed above, a data set request may identify all or a portion of the data on the data listing which may be required by the second mobile computing device and may include information about the application format for data required by the second mobile computing device. Atblock 1812 the second mobile computing device may receive a data set from the first mobile computing device. A data set may include the data requested by the second mobile computing device translated into an application format suitable for use on the second mobile computing device. Atblock 1814 the second mobile computing device may update the data resident on the second mobile computing device with the received data set. Atblock 1808 themethod 1800 may end. -
FIG. 19 illustrates an embodiment method 1900 for assigning and transmitting data pending synchronization among computing devices. As an example, the method 1900 may be implemented between a first mobile computing device, such aslaptop computer 106, a second mobile computing device, such as asmart phone 104, and aserver 102. While discussed in relation to alaptop computer 106,smart phone 104, andserver 102, the method 1900 may be implemented among an unlimited number of devices. At block 1902 a first mobile computing device, such as thelaptop computer 106, may establish a communication data link connection with a second mobile computing device, such as thesmart phone 104. The communication data link connection may be any type of connection, as discussed above with reference toFIG. 1 , Atblock 1904 the first mobile computing device may synchronize a data set between the first mobile computing device and the second mobile computing device. Synchronization of the data set may be accomplished by any method, such as by implementing any of the methods discussed above with reference toFIGS. 15 , 16, 17, and 18. Synchronization of the data set between the first mobile computing device and the second mobile computing device may result in an identical data set being resident on both the first mobile computing device and the second mobile computing device. - At
block 1906 the first mobile computing device may determine whether any data in the now synchronized data set is pending server synchronization. Data pending server synchronization may be data which has been altered in some way since the last data synchronization between the first mobile computing device and theserver 102. The first mobile computing device may determine data is pending server synchronization by reading file header information, recognizing a tag associated with the data, referencing a data segment map, or by receiving a user input indicating the data is pending server synchronization. - At
block 1908 the first mobile computing device may separate the data pending server synchronization into segments. A segment may include any grouping of the data pending server synchronization, and the separation of the data may be performed based on data characteristics, or the data pending server synchronization may be separated according to pre-determined parameters, such as a set segment size. Atblock 1910 the first mobile computing device may assign an identification (“ID”) to each pending segment. This pending segment ID may be a unique number, name, or identification element generated by the first mobile computing device. Additionally, a pending segment ID may contain or provide information about the segment, such as information regarding the segment contents, the time of creation of the segment, the first mobile computing device, the second mobile computing device, and intended server, or the segment size. Atblock 1912 the first mobile computing device may write the pending segment ID into each pending segment. The pending segment ID may be written into data representing the entire segment, or may be written into each data element comprising the individual pending segment. - At
block 1914 the first mobile computing device may assign an upload responsibility for each pending segment. An upload responsibility may be an assignment for a specific mobile computing device to transmit a specific pending segment to a server. As an example, thelaptop computer 106 may assign half the pending segments to thesmart phone 104 for upload, and may assign the other half the pending segments to itself for upload. Assignment considerations are discussed further below. Atblock 1916 first mobile computing device may synchronize the pending segments and pending segment IDs with the second mobile computing device. Synchronization of the pending segments and pending segment IDs may result in the first and second mobile computing devices having similar data sets with similar pending segments and similar pending segment IDs. As an example, synchronization of the pending segments and pending segment IDs may be accomplished by the first mobile computing device transmitting the pending segments and pending segment IDs to the second mobile computing device. The first mobile computing device may transmit all of the pending segments and pending segment IDs to the second mobile computing device, or alternatively may transmit only the portion of the pending segments and pending segment IDs assigned to the second mobile computing device. In an alternative example, the first mobile computing device may transmit instructions to the second mobile computing device for the second mobile computing device to use in creating identical pending segments and pending segment IDs. The instructions may include information such as the data included in each pending segment, a starting point for the data pending server synchronization and standard pending segment size, a pending segment ID numbering scheme, or other information enabling the second mobile computing device to recreate the pending data segments and pending segment IDs. - At
block 1918 the first mobile computing device may transmit the upload responsibilities for each pending segment to the second mobile computing device. Atblock 1920 the first mobile computing device may terminate its communication data link connection with the second mobile computing device. Atblock 1922, the first mobile computing device may establish a communication data link connection with theserver 102. The connection may be any type of connection, as discussed above with reference toFIG. 1 . Atblock 1924, the first mobile computing device may transmit its assigned pending segments to theserver 102. Atdetermination block 1926, the first mobile computing device may determine if a full upload request is received from theserver 102. A full upload request may be a message received from theserver 102 indicating that theserver 102 requests a full upload of all data pending synchronization. As an example, a full upload request may be sent by theserver 102 in response to an indication that the second mobile computing device, such as thesmart phone 104, has been lost, damaged, or destroyed. If a full upload request is not received (i.e.,determination block 1926=“No”), atblock 1930 the first mobile device may terminate its communication data link connection with theserver 102. If a full upload request is received (i.e.,determination block 1926=“Yes”), atblock 1926 the first mobile computing device may transmit all the remaining pending segments to theserver 102. As an example, the first mobile device may transmit the pending segments assigned to the second mobile device. In this manner theserver 102 may be updated with all pending segments by the first mobile computing device and all data which was pending server synchronization may be provided to theserver 102 despite the loss, damage, or destruction of the second mobile device. Atblock 1930 the first mobile device may terminate its communication data link connection with theserver 102. -
FIG. 20 illustrates anembodiment method 2000 for assigning upload responsibility which may be used in conjunction with method 1900 described above. Inblock 2002 the first mobile computing device may determine the estimated bandwidth available in both the first and second mobile computing device's data communication link connections to aserver 102. As an example, thelaptop computer 106 may determine the estimated connection bandwidth for its connection to theserver 102 and the estimated connection bandwidth for a connection between thesmart phone 104 and theserver 102. The determination of the estimated connection bandwidths may be made by information received from each mobile computing device about its communication data link connection with theserver 102 or stored bandwidth estimates for a device and/or connection type. Atblock 2004, first mobile computing device may determine the estimated total available bandwidth to aserver 102 available using the first and second mobile computing devices by combining the estimated bandwidths for both mobile computing devices. Atblock 2006 the first mobile computing device may assign upload responsibility for each pending segment to a mobile computing device in proportion to that mobile computing device's estimated connection bandwidth with theserver 102 as a percentage of total estimated total available bandwidth to theserver 102. As an example the first mobile computing device may have a communication data link connection to theserver 102 representing 70% of the total available bandwidth and the first mobile computing device may be assigned 70% of the data segments for transmission, while the second mobile computing device may have a communication data link connection to theserver 102 representing 30% of the total available bandwidth and the second mobile computing device may be assigned 30% of the data segments for transmission. The first and second mobile computing devices may then complete the uploading of data to theserver 102 per method 1900 as described above. -
FIG. 21 illustrates anembodiment method 2100 for assigning upload responsibility which may be used in conjunction with method 1900 described above. As discussed above, inblock 2002 the first mobile computing device may determine the estimated bandwidth available in both the first and second mobile computing device's data communication link connections to aserver 102. Atblock 2104 the first mobile computing device may determine data upload responsibilities that will result in the shortest estimated upload time. Atblock 2106 the first mobile computing device may assign upload responsibility for each segment to a mobile computing device based on the determined shortest download time. The first and second mobile computing devices may then complete the uploading of data to theserver 102 per method 1900 as described above. -
FIG. 22 illustrates anembodiment method 2200 for assigning upload responsibility which may be used in conjunction with method 1900 described above. Atblock 2202 the first mobile computing device may determine the mobile computing device toserver 102 communication data link connection types. As an example, a communication data link connection between theserver 102 and asmart phone 104 may be a 3G connection and a communication data link connection between theserver 102 and alaptop computer 106 may be a Wi-Fi connection. Atblock 2204 the first mobile computing device may determine a data transmission cost associated with each mobile device toserver 102 communication data link connection. As an example, thelaptop computer 106 may be provided information that a 3G connection results in a fee being charged to a user for data transmitted over the connection and that no fee is charged for data transmitted over a connection. Atblock 2206 the first mobile computing device may determine data upload responsibilities that will result in the lowest total upload cost. Atblock 2208 the first mobile computing device may assign upload responsibility for each pending segment to a mobile computing device based on the determined lowest total upload cost. In this manner, a first mobile computingdevice implementing method 2200 may operate in a cost saving mode. The first and second mobile computing devices may then complete the uploading of data to theserver 102 per method 1900 as described above. -
FIG. 23 illustrates anembodiment method 2300 for assigning upload responsibility which may be used in conjunction with method 1900 described above. Atblock 2302 the first mobile computing device may determine the total number of pending segments to be transmitted to theserver 102. Atblock 2304 the first mobile computing device may assign upload responsibility for some fraction (e.g., half) the total number of pending segments to the first mobile computing device, such as thelaptop computer 106, and upload responsibility for the other fraction of the total number of pending segments to the second mobile computing device, such as thesmart phone 104. The first and second mobile computing devices may then complete the uploading of data to theserver 102 per method 1900 as described above. -
FIG. 24 illustrates anembodiment method 2400 for assigning upload responsibility which may be used in conjunction with method 1900 described above. Atblock 2402 the first mobile computing device may identify pending segments as even or odd segments. As an example thelaptop computer 106 may write an even or odd identifying string into a data header for each segment. Atblock 2404 the first mobile computing device may assign upload responsibility for even pending segments to the first mobile device, such as thelaptop computer 106, and upload responsibility for odd pending segments to the second mobile device, such as thesmart phone 104. The first and second mobile computing devices may then complete the uploading of data to theserver 102 per method 1900 as described above. -
FIG. 25 illustrates anembodiment method 2500 for directing the transmission of data pending synchronization among computing devices which may be used in conjunction with method 1900 described above. In block 2502 aserver 102 may direct a first mobile computing device, such as alaptop computer 106, to upload a portion of the pending segments for which the first mobile computing device is riot assigned an upload responsibility. As an example, a user input indicating that a second mobile device, such as thesmart phone 104, which may have been assigned data segments to upload is lost, may trigger theserver 102 to direct the first mobile computing device, such aslaptop computer 106, to upload the portion of the pending segments originally assigned to the now lostsmart phone 104. The direction from theserver 102 to the first mobile computing device may be in the form of a full upload request sent to the first mobile computing device. In this manner, the loss or destruction of a mobile computing device may not result in the loss of data segments pending server synchronization. The first and second mobile computing devices may then complete the uploading of data to theserver 102 per method 1900 as described above. -
FIG. 26 illustrates anembodiment method 2600 for assigning and transmitting data pending synchronization among computing devices similar to method 1900, with the addition of an upload status determination. Atblock 2602, the first mobile computing device may request the second mobile computing device's upload status from theserver 102. Atblock 2604 the first mobile computing device may receive second mobile computing device's upload status from theserver 102. As an example, thelaptop computer 106 may receive a message from theserver 102 indicating thesmart phone 104, has not uploaded. Atdetermination block 2606, the first mobile computing device may use the information received inblock 2604 to determine if the second mobile computing device has uploaded. If the second mobile computing device has not uploaded (i.e.,determination block 2606=“No”), the first mobile computing device may transmit all remaining pending segments to theserver 102 inblock 1928. If the second mobile computing device has upload (i.e.,determination block 2606=“Yes”), atblock 1930 the first mobile computing device may terminate its communication data link connection with theserver 102. -
FIG. 27 illustrates anembodiment method 2700 for optimizing delivery of e-mails.Embodiment method 2700 may be implemented on a first mobile computing device, such as alaptop computer 106, which may synchronize a data set with a second mobile computing device, such as asmart phone 104, and which may provide an assigned portion of the data set to aserver 102. While discussed in relation to three devices,method 2700 may be implemented among more than three devices. Inblock 2702 the first mobile computing device may establish a communication data link connection with the second mobile computing device. The communication data link connection may be any type of connection, as discussed above with reference toFIG. 1 . Atblock 2704 the first mobile computing device may synchronize an e-mail set between the first mobile computing device and the second mobile computing device. The e-mail set may be synchronized by any method, for example those discussed above with reference to FIGS. 15, 16, 17, and 18. Atblock 2706 the first mobile computing device may determine e-mails pending for synchronization with theserver 102. - At
block 2708 the first mobile computing device may assign an upload responsibility for each pending segment. An upload responsibility may be an assignment for a specific mobile computing device to transmit a specific pending e-mail to theserver 102. In this manner each pending e-mail may be assigned to a different mobile computing device for upload. As an example, thelaptop computer 106 may assign half the e-mails to thesmart phone 104 for upload, and the other half of the e-mails to itself for upload. Atblock 2710 the first mobile computing device may transmit the upload responsibilities for each pending e-mail to the second mobile computing device. Atblock 2712, the first mobile computing device may establish a communication data link connection with theserver 102. The communication data link connection may be any type of connection, as discussed above with reference toFIG. 1 . - At
block 2714 the first mobile computing device may request theserver 102 provide the first mobile computing device with an e-mail thread status. An e-mail thread status may an indication of the time of receipt of the most recent e-mail in an e-mail thread or a listing of all e-mails in an e-mail thread resident on theserver 102. Atblock 2716 the first mobile computing device may receive a message from theserver 102 providing the e-mail thread status. In this manner the first mobile computing device may be updated with the current status of each e-mail thread. Atdetermination block 2718 the first mobile computing device may determine if more recent e-mails are in a thread using information in the e-mail thread status received inblock 2716. As an example, thelaptop computer 106 may have been disconnected from theserver 102 for a period of time. During that disconnected period alaptop computer 106 user may have drafted e-mails in response to e-mails received before thelaptop computer 106 was disconnected from theserver 102. While thelaptop computer 106 was disconnected, other recipients may have exchanged e-mails so the e-mail thread may have e-mails more recent than those stored on thelaptop computer 106. If the first mobile computing device determines there are more recent e-mails in a thread (i.e.,determination block 2718=“Yes”), inblock 2720 the first mobile computing device may request user approval to transmit its assigned pending e-mails. As an example, user approval may be requested via a pop-up window or other type user prompt displayed by first mobile computing device. If the first mobile computing device determines there are no more recent e-mails in the thread (i.e.,determination block 2718=“No”), atblock 2722 the first mobile computing device may transmit its assigned pending e-mails to theserver 102. - At
determination block 2724 the first mobile computing device may determine if the user approved transmitting its assigned pending e-mails to the server. User approval may be received as a user input, such as a button push or display selection indication. If user approval is received (i.e.,determination block 2724=“Yes”), atblock 2722 the first mobile computing device may transmit its assigned pending e-mails to theserver 102. If user approval is not received (i.e.,determination block 2724=“No”), atblock 2726 the first mobile computing device may hold its assigned pending e-mails. In this manner, e-mails which are outdated compared to the progress of the e-mails in the thread may be held and a user may avoid causing confusion in an e-mail thread by responding to outdated e-mails. -
FIGS. 28A and 28B illustrate anotherembodiment method 2800 for managing interactions between aserver 102, asmart phone 104, and alaptop computer 106 to optimize data delivery. Atblocks laptop computer 106 may perform operations of method 1900 described above with reference toFIG. 19 . Atblock smart phone 104 andlaptop computer 106 may establish a communication data link connection. The communication data link connection may be any connection suitable for transmitting data, such as those connections previously discussed previously in relation toFIG. 1 . Atblocks smart phone 104 andlaptop computer 106 may synchronize a data set between themselves as accomplished in method 1900. Atblocks smart phone 104 andlaptop computer 106 may synchronized the pending segments and pending segment IDs as accomplished in method 1900. - At
block 2808 thesmart phone 104 may receive the upload responsibilities for each pending segment from thelaptop 106. In this transmission thesmart phone 104 may receive an indication of both its own upload responsibilities and that of thelaptop computer 106. Atblocks smart phone 104 andlaptop computer 106 may terminate their communication data link connections with each other. - At
blocks laptop computer 106 andserver 102 may establish a communication data link connection. The communication data link connection may be any connection suitable for transmitting data, such as those connections previously discussed previously in relation toFIG. 1 . Atblocks 2814 and 2186 thesmart phone 104 and theserver 102 may establish a communication data link connection. The communication data link connection may be any connection suitable for transmitting data, such as those connections previously discussed previously in relation toFIG. 1 . Atblock 1924 thelaptop computer 106 may transmit its assigned pending segments to theserver 102. Atblock 2818 theserver 102 may receive the transmitted pending segments assigned to thelaptop computer 106. Atblock 2820 thesmart phone 104 may transmit its assigned pending segments to theserver 102. Atblock 2822 theserver 102 may receive the transmitted pending segments assigned to thesmart phone 104. In this manner, the full set of pending segments may be assembled in theserver 102 and the full synchronized data set may be resident on theserver 102,laptop 106, andsmart phone 104. Atblocks laptop computer 106 andserver 102 may terminate their communication data link connections with each other. Atblocks smart phone 104 andserver 102 may terminate their communication data link connections with each other. - The various embodiments may be implemented in any of a variety of mobile devices, an example of which is illustrated in
FIG. 29 . For example, themobile device 2900 may include aprocessor 2902 coupled tointernal memories Internal memories processor 2902 may also be coupled to atouch screen display 2906, such as a resistive-sensing touch screen, capacitive-sensing touch screen infrared sensing touch screen, or the like. Additionally, the display of themobile device 2900 need not have touch screen capability. Additionally, themobile device 2900 may have one ormore antenna 2908 for sending and receiving electromagnetic radiation that may be connected to a wireless data link and/orcellular telephone transceiver 2916 coupled to theprocessor 2902. Themobile device 2900 may also includephysical buttons mobile device 2900 may also include apower button 2918 for turning themobile device 2900 on and off. - The various embodiments may also be implemented on any of a variety of commercially available server devices, such as the
server 3000 illustrated inFIG. 30 . Such aserver 3000 typically includes a processor 3001 coupled to volatile memory 3002 and a large capacity nonvolatile memory, such as adisk drive 3003. Theserver 3000 may also include a floppy disc drive, compact disc (CD) or DVD disc drive 3004 coupled to the processor 3001. Theserver 3000 may also includenetwork access ports 3006 coupled to the processor 3001 for establishing network interface connections with a network 3007, such as a local area network coupled to other broadcast system computers and servers. - The various embodiments described above may also be implemented within a variety of personal computing devices, such as a
laptop computer 3110 as illustrated inFIG. 31 . Many laptop computers include a touchpad touch surface 3117 that serves as the computer's pointing device, and thus may receive drag, scroll, and flick gestures similar to those implemented on mobile computing devices equipped with a touch screen display and described above. Alaptop computer 3110 will typically include aprocessor 3111 coupled tovolatile memory 3112 and a large capacity nonvolatile memory, such as adisk drive 3113 of Flash memory. Thecomputer 3110 may also include afloppy disc drive 3114 and a compact disc (CD) drive 3115 coupled to theprocessor 3111. Thecomputer device 3110 may also include a number of connector ports coupled to theprocessor 3111 for establishing data connections or receiving external memory devices, such as a USB or FireWire® connector sockets, or other network connection circuits for coupling theprocessor 3111 to a network. In a notebook configuration, the computer housing includes thetouchpad 3117, thekeyboard 3118, and thedisplay 3119 all coupled to theprocessor 3111. Other configurations of the computing device may include a computer mouse or trackball coupled to the processor (e.g., via a USB input) as are well known, which may also be use in conjunction with the various embodiments. - The
processors internal memory processor processor processor processor - The foregoing method descriptions and the process flow diagrams are provided merely as illustrative examples and are not intended to require or imply that the steps of the various embodiments must be performed in the order presented. As will be appreciated by one of skill in the art the order of steps in the foregoing embodiments may be performed in any order. Words such as “thereafter,” “then,” “next,” etc. are not intended to limit the order of the steps; these words are simply used to guide the reader through the description of the methods. Further, any reference to claim elements in the singular, for example, using the articles “a,” “an” or “the” is not to be construed as limiting the element to the singular.
- The various illustrative logical blocks, modules, circuits, and algorithm steps described in connection with the embodiments disclosed herein may be implemented as electronic hardware, computer software, or combinations of both. To clearly illustrate this interchangeability of hardware and software, various illustrative components, blocks, modules, circuits, and steps have been described above generally in terms of their functionality. Whether such functionality is implemented as hardware or software depends upon the particular application and design constraints imposed on the overall system. Skilled artisans may implement the described functionality in varying ways for each particular application, but such implementation decisions should not be interpreted as causing a departure from the scope of the present invention.
- The hardware used to implement the various illustrative logics, logical blocks, modules, and circuits described in connection with the aspects disclosed herein may be implemented or performed with a general purpose processor, a digital signal processor (DSP), an application specific integrated circuit (ASIC), a field programmable gate array (FPGA) or other programmable logic device, discrete gate or transistor logic, discrete hardware components, or any combination thereof designed to perform the functions described herein. A general-purpose processor may be a microprocessor, but, in the alternative, the processor may be any conventional processor, controller, microcontroller, or state machine. A processor may also be implemented as a combination of computing devices, e.g., a combination of a DSP and a microprocessor, a plurality of microprocessors, one or more microprocessors in conjunction with a DSP core, or any other such configuration. Alternatively, some steps or methods may be performed by circuitry that is specific to a given function.
- In one or more exemplary aspects, the functions described may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the functions may be stored on or transmitted over as one or more instructions or code on a computer-readable medium. The steps of a method or algorithm disclosed herein may be embodied in a processor-executable software module which may reside on a tangible, non-transitory computer-readable storage medium. Tangible, non-transitory computer-readable storage media may be any available media that may be accessed by a computer. By way of example, and not limitation, such non-transitory computer-readable media may comprise RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other medium that may be used to store desired program code in the form of instructions or data, structures and that may be accessed by a computer. Disk and disc, as used herein, includes compact disc (CD), laser disc, optical disc, digital versatile disc (DVD), floppy disk, and blu-ray disc where disks usually reproduce data, magnetically, while discs reproduce data optically with lasers. Combinations of the above should also be included within the scope of non-transitory computer-readable media. Additionally, the operations of a method or algorithm may reside as one or any combination or set of codes and/or instructions on a tangible, non-transitory machine readable medium and/or computer-readable medium, which may be incorporated into a computer program product.
- The preceding description of the disclosed embodiments is provided to enable any person skilled in the art to make or use the present invention. Various modifications to these embodiments will be readily apparent to those skilled in the art, and the generic principles defined herein may be applied to other embodiments without departing from the spirit or scope of the invention. Thus, the present invention is not intended to be limited to the embodiments shown herein but is to be accorded the widest scope consistent with the following claims and the principles and novel features disclosed herein.
Claims (12)
1. A method for uploading data from a first computing device to a server, comprising:
establishing a connection between the first computing device and a second computing device;
separating a data set to be uploaded to the server into data segments;
assigning an upload responsibility for a first portion of the data segments to the first computing device and an upload responsibility for a second portion of the data segments to the second computing device;
transmitting the upload responsibilities for each segment from the first computing device to the second computing device;
transmitting the first portion of the data segments from the first computing device to the server via a first data communication link; and
transmitting the second portion of the data segments from the second computing device to the server via a second communication link.
2. The method of claim 1 , wherein assigning an upload responsibility for the first portion of the data segments to the first computing device and an upload responsibility for the second portion of the data segments to the second computing device comprises assigning upload responsibility for half of the data segments to the first computing device and assigning upload responsibility for the other half of the data segments to the second computing device.
3. The method claim 1 , wherein the data set is an e-mail data set, the method further comprising:
determining if a more recent e-mail is present in an e-mail thread stored on the server; and
requesting user approval before transmitting to the server the data segments for which upload responsibility is assigned to the first computing device if a more recent e-mail is present in the e-mail thread.
4. A system for uploading data, comprising:
a first computing device;
a second computing device; and
a server,
wherein the first computing device is configured with processor-executable instructions to perform operations comprising:
establishing a connection between the first computing device and the second computing device;
separating a data set to be uploaded to the server into data segments;
assigning an upload responsibility for a first portion of the data, segments to the first computing device and an upload responsibility for a second portion of the data segments to the second computing device;
transmitting the upload responsibilities for each segment to the second computing device; and
transmitting the first portion of the data segments to the server via a first data communication link,
wherein the second computing device is configured with processor-executable instructions to perform operations comprising:
receiving the upload responsibilities for each segment from the first computing device; and
transmitting the second portion of the data segments to the server via a second communication link.
5. The system of claim 4 , wherein assigning an upload responsibility for the first portion of the data segments to the first computing device and an upload responsibility for the second portion of the data segments to the second computing device comprises assigning upload responsibility for half of the data segments to the first computing device and assigning upload responsibility for the other half of the data segments to the second computing device.
6. The system of claim 4 , wherein the data set is an e-mail data set, and wherein the first computing device is configured with processor-executable instruction to perform operation further comprising:
determining if a more recent e-mail is present in an e-mail thread stored on the server; and
requesting user approval before transmitting the data segments for which upload responsibility is assigned to the first computing device to the server if a more recent e-mail is present in the e-mail thread.
7. A system for uploading data from a first computing device to a server, comprising:
means for establishing a connection between the first computing device and a second computing device;
means for separating a data set to be uploaded to the server into data segments;
means for assigning an upload responsibility for a first portion of the data segments to the first computing device and an upload responsibility for a second portion of the data segments to the second computing device;
means for transmitting the upload responsibilities for each segment from the first computing device to the second computing device;
means for transmitting the first portion of the data segments from the first computing device to the server via a first data communication link; and
means for transmitting the second portion of the data segments from the second computing device to the server via a second communication link.
8. The system of claim 7 , wherein means for assigning an upload responsibility for the first portion of the data segments to the first computing device and an upload responsibility for the second portion of the data segments to the second computing device comprises means for assigning upload responsibility for half of the data segments to the first computing device and means for assigning upload responsibility for the other half of the data segments to the second computing device.
9. The system of claim 7 , wherein the data set is an e-mail data, set, the system further comprising:
means for determining if a more recent e-mail is present in an e-mail thread stored on the server; and
means for requesting user approval before transmitting to the server the data segments for which upload responsibility is assigned to the first computing device if a more recent e-mail is present in the e-mail thread.
10. A computing device, comprising:
a memory; and
a processor coupled to the memory, the processor configured with processor-executable instructions to perform operations comprising:
establishing a data communication link between the computing device and a second computing device;
separating a data set to be uploaded to a server into data segments;
assigning an upload responsibility for a first portion of the data segments to the computing device and an upload responsibility for a second portion of the data segments to the second computing device;
transmitting the upload responsibilities for each segment to the second computing device; and
transmitting the first portion of the data segments to the server via a first data communication link which is different from the data communication link used by the second computing device.
11. The computing device of claim 10 , wherein assigning an upload responsibility for the first portion of the data segments to the computing device and an upload responsibility for the second portion of the data segments to the second computing device comprises assigning upload responsibility for half of the data segments to the computing device and assigning upload responsibility for the other half of the data segments to the second computing device.
12. The computing device of claim 10 , wherein the data set is an e-mail data set, and wherein the processor is configured with processor-executable instructions to perform operations further comprising:
requesting an e-mail thread status from the server;
receiving the e-mail thread status from the server;
determining if a more recent e-mail is present in an e-mail thread stored on the server based at least in part on the received e-mail thread status; and
requesting user approval before transmitting to the server the data segments for which upload responsibility is assigned to the computing device if a more recent e-mail is present in the e-mail thread.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/840,605 US20150373146A1 (en) | 2012-01-01 | 2015-08-31 | Data Delivery Optimization |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/342,092 US9160697B2 (en) | 2012-01-01 | 2012-01-01 | Data delivery optimization |
US14/840,605 US20150373146A1 (en) | 2012-01-01 | 2015-08-31 | Data Delivery Optimization |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/342,092 Division US9160697B2 (en) | 2012-01-01 | 2012-01-01 | Data delivery optimization |
Publications (1)
Publication Number | Publication Date |
---|---|
US20150373146A1 true US20150373146A1 (en) | 2015-12-24 |
Family
ID=47561851
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/342,092 Expired - Fee Related US9160697B2 (en) | 2012-01-01 | 2012-01-01 | Data delivery optimization |
US14/840,605 Abandoned US20150373146A1 (en) | 2012-01-01 | 2015-08-31 | Data Delivery Optimization |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/342,092 Expired - Fee Related US9160697B2 (en) | 2012-01-01 | 2012-01-01 | Data delivery optimization |
Country Status (6)
Country | Link |
---|---|
US (2) | US9160697B2 (en) |
EP (1) | EP2798795A2 (en) |
JP (1) | JP6144279B2 (en) |
KR (1) | KR20140110980A (en) |
CN (2) | CN107040451A (en) |
WO (1) | WO2013102229A2 (en) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130332621A1 (en) * | 2012-06-08 | 2013-12-12 | Ecole Polytechnique Federale De Lausanne (Epfl) | System and method for cooperative data streaming |
US9898475B1 (en) | 2013-02-25 | 2018-02-20 | EMC IP Holding Company LLC | Tiering with pluggable storage system for parallel query engines |
US11328344B2 (en) * | 2013-05-31 | 2022-05-10 | Itron, Inc. | Utility application delivery platform |
US10108692B1 (en) * | 2013-10-15 | 2018-10-23 | Amazon Technologies, Inc. | Data set distribution |
US20150379310A1 (en) * | 2014-06-27 | 2015-12-31 | Kabushiki Kaisha Toshiba | Electronic Apparatus, Control Method and Storage Medium |
US20160098440A1 (en) * | 2014-10-06 | 2016-04-07 | Microsoft Technology Licensing, Llc | Validation of segmented data entries |
JP6581858B2 (en) * | 2015-09-16 | 2019-09-25 | 日本放送協会 | Data distribution system, information server, and communication terminal |
KR102238111B1 (en) | 2015-12-08 | 2021-04-09 | 삼성전자주식회사 | A method and apparatus for control a upload size |
US10546138B1 (en) | 2016-04-01 | 2020-01-28 | Wells Fargo Bank, N.A. | Distributed data security |
US10425458B2 (en) * | 2016-10-14 | 2019-09-24 | Cisco Technology, Inc. | Adaptive bit rate streaming with multi-interface reception |
US9703841B1 (en) | 2016-10-28 | 2017-07-11 | International Business Machines Corporation | Context-based notifications in multi-application based systems |
US20190253477A1 (en) * | 2018-03-30 | 2019-08-15 | Intel Corporation | Data Fragment Recombination for Internet of Things Devices |
US10965778B1 (en) * | 2019-09-18 | 2021-03-30 | Motorola Solutions, Inc. | Multiunit charging device and method for preemptive data upload |
Citations (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5625670A (en) * | 1991-05-20 | 1997-04-29 | Ntp Incorporated | Electronic mail system with RF communications to mobile processors |
US20020009986A1 (en) * | 2000-04-19 | 2002-01-24 | Microsoft Corporation | Method and system for providing mobile services |
US20020099844A1 (en) * | 2000-08-23 | 2002-07-25 | International Business Machines Corporation | Load balancing and dynamic control of multiple data streams in a network |
US20020124057A1 (en) * | 2001-03-05 | 2002-09-05 | Diego Besprosvan | Unified communications system |
US20020194205A1 (en) * | 2001-03-16 | 2002-12-19 | Novell, Inc. | Server for synchronization of files |
US6671757B1 (en) * | 2000-01-26 | 2003-12-30 | Fusionone, Inc. | Data transfer and synchronization system |
US20050044165A1 (en) * | 2003-01-23 | 2005-02-24 | O'farrell Robert | System and method for mobile data update |
US20060005924A1 (en) * | 2004-07-12 | 2006-01-12 | Sumitomo Chemical Company, Limited | Method for producing thermoplastic resin laminated sheet |
US20060271530A1 (en) * | 2003-06-30 | 2006-11-30 | Bauer Daniel M | Retrieving a replica of an electronic document in a computer network |
US20070016613A1 (en) * | 2005-07-15 | 2007-01-18 | Stefano Foresti | System and method for data transport |
US20070016632A1 (en) * | 2005-07-14 | 2007-01-18 | Yahoo! Inc. | System and method for synchronizing between a user device and a server in a communication network |
US20070208803A1 (en) * | 2005-11-03 | 2007-09-06 | Moshe Levi | Method and System for Email and PIM Synchronization and Updating |
US20070288638A1 (en) * | 2006-04-03 | 2007-12-13 | British Columbia, University Of | Methods and distributed systems for data location and delivery |
US20080005336A1 (en) * | 2006-04-26 | 2008-01-03 | Bram Cohen | Peer-to-Peer Download And Seed Policy Management |
US20080172392A1 (en) * | 2007-01-12 | 2008-07-17 | International Business Machines Corporation | Method, System, And Computer Program Product For Data Upload In A Computing System |
US20080235746A1 (en) * | 2007-03-20 | 2008-09-25 | Michael James Peters | Methods and apparatus for content delivery and replacement in a network |
US20090070429A1 (en) * | 2007-07-27 | 2009-03-12 | Thomas Murphy | Information exchange in wireless servers |
US20090094195A1 (en) * | 2003-03-15 | 2009-04-09 | Damian Black | Method for Distributed RDSMS |
CN101426019A (en) * | 2007-10-30 | 2009-05-06 | 广州商机网络科技有限公司 | Data file transmission method for mobile phone system |
US20090144412A1 (en) * | 2007-12-03 | 2009-06-04 | Cachelogic Ltd. | Method and apparatus for the delivery of digital data |
US20090234967A1 (en) * | 2008-03-17 | 2009-09-17 | Nokia Corporation | Method, system, and apparatus for transferring P2P file distribution tasks between devices |
US20090260060A1 (en) * | 2008-04-14 | 2009-10-15 | Lookwithus.Com, Inc. | Rich media collaboration system |
US20100131941A1 (en) * | 2007-03-09 | 2010-05-27 | Martin Georg Walter Hnida | Method in a computer system for performing data transfer and corresponding device |
US20100169406A1 (en) * | 2008-12-29 | 2010-07-01 | Microsoft Corporation | Roaming personal information items across multiple computing devices using an imap server |
US20100287253A1 (en) * | 2008-01-21 | 2010-11-11 | Huawei Technologies Co., Ltd. | Method, apparatus, and system for data synchronization |
US20110071841A1 (en) * | 2008-02-15 | 2011-03-24 | Ddn Ip Holdings Limited | Distribution of digital content |
US20110131278A1 (en) * | 2008-05-23 | 2011-06-02 | Jason Nieh | Systems and methods for peer-to-peer bandwidth allocation |
US20110252006A1 (en) * | 2006-11-14 | 2011-10-13 | Microsoft Corporation | Offline sharing capability for client application |
US20110270929A1 (en) * | 2008-09-18 | 2011-11-03 | Jeffrey Paul Harrang | Systems and methods for automatic detection and coordinated delivery of burdensome media content |
US20120233522A1 (en) * | 2011-03-08 | 2012-09-13 | Rackspace Us, Inc. | Method for handling large object files in an object storage system |
US20120284363A1 (en) * | 2009-12-29 | 2012-11-08 | France Telecom | Method and device for transmitting content |
Family Cites Families (53)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05207190A (en) * | 1992-01-28 | 1993-08-13 | Fuji Xerox Co Ltd | Data communication system utilizing plural lines |
US7237036B2 (en) * | 1997-10-14 | 2007-06-26 | Alacritech, Inc. | Fast-path apparatus for receiving data corresponding a TCP connection |
US6477543B1 (en) | 1998-10-23 | 2002-11-05 | International Business Machines Corporation | Method, apparatus and program storage device for a client and adaptive synchronization and transformation server |
US7334044B1 (en) * | 1998-11-17 | 2008-02-19 | Burst.Com | Method for connection acceptance control and optimal multi-media content delivery over networks |
GB2371902B (en) | 1999-09-10 | 2004-11-17 | Avantgo Inc | System, method, and computer program product for interactive interfacing with mobile devices |
US20050237949A1 (en) | 2000-12-21 | 2005-10-27 | Addessi Vincent M | Dynamic connection structure for file transfer |
WO2002071242A1 (en) * | 2001-03-01 | 2002-09-12 | Akamai Technologies, Inc. | Optimal route selection in a content delivery network |
US7542419B2 (en) * | 2001-04-02 | 2009-06-02 | International Business Machines Corporation | Method and apparatus for managing aggregate bandwidth at a server |
CA2408766A1 (en) * | 2001-10-17 | 2003-04-17 | Telecommunications Research Laboratory | Content delivery network bypass system |
US7133905B2 (en) * | 2002-04-09 | 2006-11-07 | Akamai Technologies, Inc. | Method and system for tiered distribution in a content delivery network |
US20030204602A1 (en) * | 2002-04-26 | 2003-10-30 | Hudson Michael D. | Mediated multi-source peer content delivery network architecture |
US7555559B2 (en) * | 2003-02-28 | 2009-06-30 | Onion Networks, KK | Parallel data transfer over multiple channels with data order prioritization |
WO2004100010A1 (en) * | 2003-04-30 | 2004-11-18 | Iptv Systems, Llc | Secure, continuous, proxy-optimized, device-to-device data download reception system and method of use |
US8271526B2 (en) * | 2004-03-08 | 2012-09-18 | British Telecommunications Public Limited Company | Content provisioning method and system |
US20050283487A1 (en) | 2004-06-21 | 2005-12-22 | Magnus Karlsson | Method of determining lower bound for replication cost |
US7593333B2 (en) * | 2004-07-07 | 2009-09-22 | Microsoft Corporation | Efficient one-to-many content distribution in a peer-to-peer computer network |
US7899863B2 (en) | 2004-08-18 | 2011-03-01 | Siemens Enterprise Communications, Inc. | Apparatus and method for enhanced synchronization using an IMS server |
US7664109B2 (en) | 2004-09-03 | 2010-02-16 | Microsoft Corporation | System and method for distributed streaming of scalable media |
US7174385B2 (en) * | 2004-09-03 | 2007-02-06 | Microsoft Corporation | System and method for receiver-driven streaming in a peer-to-peer network |
JP2006254080A (en) * | 2005-03-10 | 2006-09-21 | Mitsubishi Electric Corp | Radio communications network, base station and terminal for use in the same |
US20070055862A1 (en) * | 2005-09-08 | 2007-03-08 | Interdigital Technology Corporation | Method and system for distributing data |
EP1798934A1 (en) * | 2005-12-13 | 2007-06-20 | Deutsche Thomson-Brandt Gmbh | Method and apparatus for organizing nodes in a network |
US9047310B2 (en) | 2006-02-22 | 2015-06-02 | Microsoft Technology Licensing, Llc | Reliable, efficient peer-to-peer storage |
WO2007115991A1 (en) * | 2006-04-11 | 2007-10-18 | Thomson Licensing | Data reception method, repair method and corresponding terminal |
US8230098B2 (en) * | 2006-05-10 | 2012-07-24 | At&T Intellectual Property Ii, L.P. | System and method for streaming media objects |
US20080005113A1 (en) * | 2006-06-30 | 2008-01-03 | Microsoft Corporation | Sender-driven incentive-based mass p2p file sharing |
US8064391B2 (en) * | 2006-08-22 | 2011-11-22 | Embarq Holdings Company, Llc | System and method for monitoring and optimizing network performance to a wireless device |
US7865212B2 (en) | 2007-01-17 | 2011-01-04 | Research In Motion Limited | Methods and apparatus for use in transferring user data between two different mobile communication devices using a removable memory card |
US8620784B2 (en) * | 2007-05-31 | 2013-12-31 | International Business Machines Corporation | Formation and rearrangement of ad hoc networks |
US7894828B2 (en) * | 2007-05-31 | 2011-02-22 | International Business Machines Corporation | System and method for establishing peer-to-peer bandwidth sharing ad hoc networks |
US8594558B2 (en) * | 2007-06-07 | 2013-11-26 | Qualcomm Incorporated | Methods and apparatuses of providing multimedia content to a mobile device |
US20090037529A1 (en) * | 2007-07-31 | 2009-02-05 | Samsung Electronics Co., Ltd. | Data sharing in a group of peers with limited resources |
US20090100128A1 (en) * | 2007-10-15 | 2009-04-16 | General Electric Company | Accelerating peer-to-peer content distribution |
US8606846B2 (en) | 2007-10-15 | 2013-12-10 | Nbcuniversal Media, Llc | Accelerating peer-to-peer content distribution |
US7778165B2 (en) * | 2007-11-08 | 2010-08-17 | University Of Washington | Information plane for determining performance metrics of paths between arbitrary end-hosts on the internet |
WO2009076251A2 (en) * | 2007-12-13 | 2009-06-18 | General Electric Company | Accelerating peer-to-peer content distribution |
US8386629B2 (en) * | 2007-12-27 | 2013-02-26 | At&T Intellectual Property I, L.P. | Network optimized content delivery for high demand non-live contents |
US20090228542A1 (en) | 2008-03-06 | 2009-09-10 | Microsoft Corporation | Occasionally-connected support through off-line service-supplied proxies |
JP4518169B2 (en) * | 2008-03-24 | 2010-08-04 | ブラザー工業株式会社 | Tree-type broadcast system, mode switching instruction method, broadcast apparatus, and broadcast processing program |
US9106668B2 (en) * | 2008-06-24 | 2015-08-11 | Azureus Software, Inc. | Distributed peer location in peer-to-peer file transfers |
JP4850218B2 (en) * | 2008-07-30 | 2012-01-11 | 株式会社ソニー・コンピュータエンタテインメント | Data distribution system |
US8145722B2 (en) * | 2008-08-28 | 2012-03-27 | Nathan Douglas Koons | Media transfer system and associated methods |
US8219706B2 (en) * | 2008-11-14 | 2012-07-10 | At&T Intellectual Property I, Lp | Interdomain network aware peer-to-peer protocol |
CN101437044B (en) * | 2008-11-28 | 2012-05-09 | 中兴通讯股份有限公司 | Method and system for downloading file by point-to-point network technique based on sliced sheet |
US8631072B2 (en) * | 2008-12-03 | 2014-01-14 | Telefonaktiebolaget L M Ericsson (Publ) | Method for selection of suitable peers in a peer-to-peer (P2P) network |
CN101764831B (en) * | 2008-12-24 | 2012-09-19 | 中国移动通信集团公司 | Method and system for sharing stream media data, and stream media node |
EP2252061A1 (en) * | 2009-05-15 | 2010-11-17 | Thomson Licensing | Method and system for storing and distributing electronic content |
KR101562974B1 (en) * | 2009-09-07 | 2015-10-30 | 삼성전자 주식회사 | Terminal seed server and tracker server for reducing delay in streaming service |
US20110153737A1 (en) * | 2009-12-17 | 2011-06-23 | Chu Thomas P | Method and apparatus for decomposing a peer-to-peer network and using a decomposed peer-to-peer network |
JP5537181B2 (en) * | 2010-02-17 | 2014-07-02 | 株式会社日立製作所 | Message system |
US20110307538A1 (en) * | 2010-06-10 | 2011-12-15 | Alcatel-Lucent Usa, Inc. | Network based peer-to-peer traffic optimization |
US8655985B2 (en) * | 2010-11-15 | 2014-02-18 | International Business Machines Corporation | Content delivery using multiple sources over heterogeneous interfaces |
CN102118438A (en) * | 2011-01-17 | 2011-07-06 | 中兴通讯股份有限公司 | Method and device for live broadcasting apple media stream in Internet protocol television (IPTV) system |
-
2012
- 2012-01-01 US US13/342,092 patent/US9160697B2/en not_active Expired - Fee Related
- 2012-12-31 EP EP12816221.1A patent/EP2798795A2/en not_active Withdrawn
- 2012-12-31 CN CN201610865713.3A patent/CN107040451A/en active Pending
- 2012-12-31 JP JP2014550549A patent/JP6144279B2/en not_active Expired - Fee Related
- 2012-12-31 KR KR1020147021043A patent/KR20140110980A/en not_active Application Discontinuation
- 2012-12-31 WO PCT/US2012/072344 patent/WO2013102229A2/en active Application Filing
- 2012-12-31 CN CN201280065098.8A patent/CN104012047B/en not_active Expired - Fee Related
-
2015
- 2015-08-31 US US14/840,605 patent/US20150373146A1/en not_active Abandoned
Patent Citations (33)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5625670A (en) * | 1991-05-20 | 1997-04-29 | Ntp Incorporated | Electronic mail system with RF communications to mobile processors |
US20110269424A1 (en) * | 2000-01-25 | 2011-11-03 | Synchronoss Technologies, Inc. | Data transfer and synchronization system |
US6671757B1 (en) * | 2000-01-26 | 2003-12-30 | Fusionone, Inc. | Data transfer and synchronization system |
US20020009986A1 (en) * | 2000-04-19 | 2002-01-24 | Microsoft Corporation | Method and system for providing mobile services |
US20020099844A1 (en) * | 2000-08-23 | 2002-07-25 | International Business Machines Corporation | Load balancing and dynamic control of multiple data streams in a network |
US20020124057A1 (en) * | 2001-03-05 | 2002-09-05 | Diego Besprosvan | Unified communications system |
US20020194205A1 (en) * | 2001-03-16 | 2002-12-19 | Novell, Inc. | Server for synchronization of files |
US20050044165A1 (en) * | 2003-01-23 | 2005-02-24 | O'farrell Robert | System and method for mobile data update |
US20090094195A1 (en) * | 2003-03-15 | 2009-04-09 | Damian Black | Method for Distributed RDSMS |
US20060271530A1 (en) * | 2003-06-30 | 2006-11-30 | Bauer Daniel M | Retrieving a replica of an electronic document in a computer network |
US20060005924A1 (en) * | 2004-07-12 | 2006-01-12 | Sumitomo Chemical Company, Limited | Method for producing thermoplastic resin laminated sheet |
US20070016632A1 (en) * | 2005-07-14 | 2007-01-18 | Yahoo! Inc. | System and method for synchronizing between a user device and a server in a communication network |
US20070016613A1 (en) * | 2005-07-15 | 2007-01-18 | Stefano Foresti | System and method for data transport |
US20070208803A1 (en) * | 2005-11-03 | 2007-09-06 | Moshe Levi | Method and System for Email and PIM Synchronization and Updating |
US20070288638A1 (en) * | 2006-04-03 | 2007-12-13 | British Columbia, University Of | Methods and distributed systems for data location and delivery |
US20080005336A1 (en) * | 2006-04-26 | 2008-01-03 | Bram Cohen | Peer-to-Peer Download And Seed Policy Management |
US20110252006A1 (en) * | 2006-11-14 | 2011-10-13 | Microsoft Corporation | Offline sharing capability for client application |
US20080172392A1 (en) * | 2007-01-12 | 2008-07-17 | International Business Machines Corporation | Method, System, And Computer Program Product For Data Upload In A Computing System |
US20100131941A1 (en) * | 2007-03-09 | 2010-05-27 | Martin Georg Walter Hnida | Method in a computer system for performing data transfer and corresponding device |
US20080235746A1 (en) * | 2007-03-20 | 2008-09-25 | Michael James Peters | Methods and apparatus for content delivery and replacement in a network |
US20090070429A1 (en) * | 2007-07-27 | 2009-03-12 | Thomas Murphy | Information exchange in wireless servers |
CN101426019A (en) * | 2007-10-30 | 2009-05-06 | 广州商机网络科技有限公司 | Data file transmission method for mobile phone system |
CN101426019B (en) * | 2007-10-30 | 2013-04-24 | 广州市威宝网络科技有限公司 | Data file transmission method for mobile phone system |
US20090144412A1 (en) * | 2007-12-03 | 2009-06-04 | Cachelogic Ltd. | Method and apparatus for the delivery of digital data |
US20100287253A1 (en) * | 2008-01-21 | 2010-11-11 | Huawei Technologies Co., Ltd. | Method, apparatus, and system for data synchronization |
US20110071841A1 (en) * | 2008-02-15 | 2011-03-24 | Ddn Ip Holdings Limited | Distribution of digital content |
US20090234967A1 (en) * | 2008-03-17 | 2009-09-17 | Nokia Corporation | Method, system, and apparatus for transferring P2P file distribution tasks between devices |
US20090260060A1 (en) * | 2008-04-14 | 2009-10-15 | Lookwithus.Com, Inc. | Rich media collaboration system |
US20110131278A1 (en) * | 2008-05-23 | 2011-06-02 | Jason Nieh | Systems and methods for peer-to-peer bandwidth allocation |
US20110270929A1 (en) * | 2008-09-18 | 2011-11-03 | Jeffrey Paul Harrang | Systems and methods for automatic detection and coordinated delivery of burdensome media content |
US20100169406A1 (en) * | 2008-12-29 | 2010-07-01 | Microsoft Corporation | Roaming personal information items across multiple computing devices using an imap server |
US20120284363A1 (en) * | 2009-12-29 | 2012-11-08 | France Telecom | Method and device for transmitting content |
US20120233522A1 (en) * | 2011-03-08 | 2012-09-13 | Rackspace Us, Inc. | Method for handling large object files in an object storage system |
Non-Patent Citations (2)
Title |
---|
A. Sherman, J. Nieh, and C.Stei, FairTorrent: A Deficit-Based Distributed Algorithm to Ensure Fairness in Peer-to-Peer Systems, IEEE/ACM TRANSACTIONS ON NETWORKING, VOL. 20, NO. 5, OCTOBER 2012, p.1361 - 1374 * |
BitTorrent Protocol 2011-12-30 * |
Also Published As
Publication number | Publication date |
---|---|
JP6144279B2 (en) | 2017-06-07 |
CN104012047A (en) | 2014-08-27 |
US20130173716A1 (en) | 2013-07-04 |
CN104012047B (en) | 2017-06-30 |
JP2015513128A (en) | 2015-04-30 |
KR20140110980A (en) | 2014-09-17 |
CN107040451A (en) | 2017-08-11 |
WO2013102229A3 (en) | 2013-08-29 |
WO2013102229A2 (en) | 2013-07-04 |
EP2798795A2 (en) | 2014-11-05 |
US9160697B2 (en) | 2015-10-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9160697B2 (en) | Data delivery optimization | |
US10264433B2 (en) | System and method for using an electronic lock with a smartphone | |
US9743251B2 (en) | Adding location names using private frequent location data | |
US9979784B2 (en) | Method for cloud data backup and recovery | |
KR102340085B1 (en) | A device and a server synchronizing data | |
US9130942B2 (en) | Optimizing recipient application selection in a multiple application environment using equivalence classes for applications | |
CN112380227B (en) | Data synchronization method, device, equipment and storage medium based on message queue | |
US20160306988A1 (en) | Providing secure access to data in mobile devices | |
US20170279654A1 (en) | Data Processing System and Data Processing Method | |
US20120278396A1 (en) | Method, system and apparatus for managing messages | |
CN109088914B (en) | Block generation method, block chain ecosystem and computer readable storage medium | |
US20160261705A1 (en) | Off-line mobile application synchronization | |
US10095451B2 (en) | Printing device proximity beacon identifications | |
CN104079598A (en) | Method and device for realizing collaborative browsing of webpages | |
US10133759B1 (en) | System for determining storage or output of data objects | |
US20160283052A1 (en) | Method, system and recording medium for sorting objects in a messenger platform | |
WO2021077862A1 (en) | File synchronization method and device | |
EP2930675A1 (en) | Information processing system, information processing apparatus, terminal apparatus, and program | |
KR101596588B1 (en) | Method for moving data between terminals and apparatus for the same | |
US20110270928A1 (en) | Data sharing operation between storage device and host group | |
KR20140116604A (en) | Data synchronization system among client terminals | |
US10187380B2 (en) | User device, method for setting password thereof, and operating method for setting and verifying password thereof | |
US9547704B1 (en) | Email robustness checking | |
CN115470197A (en) | Timing data migration method, device, equipment and storage medium |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: QUALCOMM INCORPORATED, CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:ROGERS, SEAN S.;REEL/FRAME:036458/0530 Effective date: 20120310 |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: ADVISORY ACTION MAILED |
|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |