Randomized peer-to-peer synchronization of shared content items
First Claim
1. A method comprising:
- on a first client device associated with a first namespace and communicating on a local area network (LAN) and with a content management system on a network other than the LAN, storing one or more content items associated with the namespace, each content item including one or more blocks;
receiving, by the first client device, broadcasts from a plurality of other client devices, each broadcast identifying one or more namespaces associated with the broadcasting client device;
identifying, by the first client device, from the received broadcasts, a group of one or more of the broadcasting client devices broadcasting the first namespace;
connecting, by the first client device, to a subset of the identified group of broadcasting client devices, the subset of client devices being associated with the first namespace and communicating with the content management system and on the LAN;
receiving, by the first client device, a notification from the content management system that a new content item is associated with the first namespace, wherein the new content item includes a plurality of blocks, the plurality of blocks arranged in a randomized block list;
selecting, by the first client device, a set of the connected client devices storing the first namespace;
sending, by the first client device, a first request to each of the selected set of the connected client devices requesting a first block of the plurality of blocks in the randomized block list;
responsive to determining, by the first client device, that none of the selected set of the connected client devices are storing the first block, downloading the first block from the content management system;
sending, by the first client device, a second request to each of the selected set of the connected client devices requesting a second block of the plurality of blocks in the randomized block list; and
responsive to determining, by the first client device, that a client device of the selected set of the connected client devices is storing the second block, downloading the second block from the client device that is storing the second block.
3 Assignments
0 Petitions
Accused Products
Abstract
A content management system synchronizes content items across client computing systems connected by a network. Client devices connected to peer devices on a LAN utilize peer-to-peer synchronization to synchronize content items. Client devices on the LAN broadcast namespaces synchronized on the client devices with other devices on the LAN. Client devices on the LAN connect to a subset of client devices that share a namespace with the connecting client device based on the broadcasts. Upon receiving a notification from the content management system that a new content item has been synchronized with the namespace a client device sends requests for a block comprising a content item to a subset of the connected devices. Additional block requests are sent in the order of randomized blocklist.
85 Citations
20 Claims
-
1. A method comprising:
-
on a first client device associated with a first namespace and communicating on a local area network (LAN) and with a content management system on a network other than the LAN, storing one or more content items associated with the namespace, each content item including one or more blocks; receiving, by the first client device, broadcasts from a plurality of other client devices, each broadcast identifying one or more namespaces associated with the broadcasting client device; identifying, by the first client device, from the received broadcasts, a group of one or more of the broadcasting client devices broadcasting the first namespace; connecting, by the first client device, to a subset of the identified group of broadcasting client devices, the subset of client devices being associated with the first namespace and communicating with the content management system and on the LAN; receiving, by the first client device, a notification from the content management system that a new content item is associated with the first namespace, wherein the new content item includes a plurality of blocks, the plurality of blocks arranged in a randomized block list; selecting, by the first client device, a set of the connected client devices storing the first namespace; sending, by the first client device, a first request to each of the selected set of the connected client devices requesting a first block of the plurality of blocks in the randomized block list; responsive to determining, by the first client device, that none of the selected set of the connected client devices are storing the first block, downloading the first block from the content management system; sending, by the first client device, a second request to each of the selected set of the connected client devices requesting a second block of the plurality of blocks in the randomized block list; and responsive to determining, by the first client device, that a client device of the selected set of the connected client devices is storing the second block, downloading the second block from the client device that is storing the second block. - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
-
8. A system comprising:
-
a processor; and a memory storing instructions that, when executed by the processor, cause the processor to; on a first client device associated with a first namespace and communicating on a local area network (LAN) and with a content management system on a network other than the LAN, storing one or more content items associated with the namespace, each content item including one or more blocks; receive, by the first client device, broadcasts from a plurality of other client devices, each broadcast identifying one or more namespaces associated with the broadcasting client device; identify, by the first client device, from the received broadcasts, a group of one or more of the broadcasting client devices broadcasting the first namespace; connect, by the first client device, to a subset of the identified group of broadcasting client devices, the subset of client devices being associated with the first namespace and communicating with the content management system and on the LAN; receive, by the first client device, a notification from the content management system that a new content item is associated with the first namespace, wherein the new content item includes a plurality of blocks, the plurality of blocks arranged in a randomized block list; select, by the first client device, a set of the connected client devices storing the first namespace; send, by the first client device, a first request to each of the selected set of the connected client devices requesting a first block of the plurality of blocks in the randomized block list; responsive to determining, by the first client device, that none of the selected set of the connected client devices are storing the first block;
download the first block from the content management system;send, by the first client device, a second request to each of the selected set of the connected client devices requesting a second block of the plurality of blocks in the randomized block list; and responsive to determining, by the first client device, that a client device of the selected set of the connected client devices is storing the second block, download the second block from the client device that is storing the second block. - View Dependent Claims (9, 10, 11, 12, 13, 14)
-
-
15. A non-transitory computer readable storage medium storing instructions that, when executed by a processor causes the process to perform steps of:
-
on a first client device associated with a first namespace and communicating on a local area network (LAN) and with a content management system on a network other than the LAN, storing one or more content items associated with the namespace, each content item including one or more blocks; receiving, by the first client device, broadcasts from a plurality of other client devices, each broadcast identifying one or more namespaces associated with the broadcasting client device; identifying, by the first client device, from the received broadcasts, a group of one or more of the broadcasting client devices broadcasting the first namespace; connecting, by the first client device, to a subset of the identified group of broadcasting client devices, the subset of client devices being associated with the first namespace and communicating with the content management system and on the LAN; receiving, by the first client device, a notification from the content management system that a new content item is associated with the first namespace, wherein the new content item includes a plurality of blocks, the plurality of blocks arranged in a randomized block list; selecting, by the first client device, a set of the connected client devices storing the first namespace; sending, by the first client device, a first request to each of the selected set of the connected client devices requesting a first block of the plurality of blocks in the randomized block list; responsive to determining, by the first client device, that none of the selected set of the connected client devices are storing the first block, downloading the first block from the content management system; sending, by the first client device, a second request to each of the selected set of the connected client devices requesting a second block of the plurality of blocks in the randomized block list; and responsive to determining, by the first client device, that a client device of the selected set of the connected client devices is storing the second block, downloading the second block from the client device that is storing the second block. - View Dependent Claims (16, 17, 18, 19, 20)
-
Specification