IP Library Granted Patent US 11,200,287
Granted Patent B2
US 11,200,287 · App. 13/593,457 · Granted Dec 14, 2021

Global address list

Inventors: Chad Owen Yoshikawa (Kirkland, WA); George Benjamin Michael van den Driessche (London, GB); Mark Stephen Goodman (Seattle, WA); Philip Charles Nelson (San Jose, CA); Mark Edward Stahl (Jersey City, NJ)
Assignee: Google LLC
G06F16/9535H04L67/1095H04L67/306H04L69/28
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,200,287
App. No.
13/593,457
Granted
Dec 14, 2021
Kind
B2
Abstract

Configurations for providing a data feed of contact information updates, deletes, and additions to one or more clients are disclosed. A contact information server can maintain a log including respective log entries of different updates (e.g., in a log structure data store) performed on the contact information. The contact information server orders the log entries using associated timestamps in order to be consistent with the actual order of updates performed on the contact information. For synchronizing contact information, a client will submit a query and supply a timestamp to the contact information server to request the log of updates based on the timestamp (e.g., log entries corresponding to a set of updates since the included timestamp). The server will respond with one or more modifications to the contact information represented as the set of updates in respective log entries.

Claims (50)

1. A machine-implemented method comprising:

receiving, at a server device from a client device over a network, a request for a set of updates for existing contact information of a contact of one or more contacts, wherein the request comprises a synchronization timestamp associated with a previous synchronization time of the client device;

analyzing, based on the synchronization timestamp associated with the previous synchronization time of the client device, a log comprising one or more log entries, wherein the log is distinct from the one or more contacts, wherein a log entry of the log indicates a modification to the contact with the existing contact information, and wherein the log entry comprises additional contact information added to the existing contact information of the contact and a modification timestamp associated with a time of the modification;

determining, by a processing device, based on the analysis of the log, the set of updates based on the one or more log entries and the synchronization timestamp, wherein the set of updates comprises the additional contact information of the contact and is absent the existing contact information of the contact; and

transmitting the set of updates comprising the additional contact information of the log entry and the modification timestamp of the log entry over the network to the client device.

2. The method of claim 1 , wherein the set of updates is based on a deletion, an addition, and an update operation performed on the one or more contacts.

3. The method of claim 1 , wherein the set of updates is temporally ordered according to the respective modification timestamp associated with each update of the set of updates.

4. The method of claim 3 , wherein the temporally ordered set of updates is in ascending order according to each respective modification timestamp.

5. The method of claim 3 , wherein the temporally ordered set of updates are in descending order according to each respective modification timestamp.

6. The method of claim 1 , wherein the additional contact information of the contact comprises profile information of a user.

7. The method of claim 6 , wherein the profile information pertains to a social networking service, an email service, or a phone service.

8. The method of claim 1 , wherein transmitting the set of updates comprises throttling the transmission of the set of updates to include a subset of the set of updates.

9. The method of claim 8 , further comprising:

receiving a second request for a set of remaining updates from the set of updates, the second request including a timestamp corresponding to a last update in the subset of the set of updates; and

transmitting the set of remaining updates, the set of remaining updates determined based on the timestamp corresponding to the last update in the subset of the set of updates.

10. The method of claim 1 , wherein the set of updates further comprises data of a plurality of the log entries.

11. The method of claim 1 , wherein the one or more contacts are stored in one or more data centers.

12. The method of claim 1 , wherein the one or more contacts is stored in one or more domains.

13. The method of claim 1 , further comprising:

determining a display name associated with the one or more contacts; and

generating an index of prefixes based on the display name.

14. The method of claim 13 , further comprising:

receiving a search query from the client device for contact information;

performing the search query on the index of prefixes; and

transmitting, to the client device, contact information associated with one or more contacts based on results of the search query.

15. The method of claim 13 , wherein the index of prefixes is generated on a periodic basis.

16. The method of claim 13 , wherein the index of prefixes includes a subset of characters from each display name as a respective entry in the index of prefixes.

17. A system comprising:

a memory;

one or more processors coupled to the memory, the one or more processors to:

receive a request for existing contact information over a network from a client, wherein the request comprises a synchronization timestamp associated with a previous synchronization time;

analyze, based on the synchronization timestamp associated with the previous synchronization time, a log comprising one or more log entries, wherein the log is distinct from the one or more contacts, wherein a log entry of the log indicates a modification to a contact with the existing contact information, and wherein the log entry comprises additional contact information added to the existing contact information of the contact and a modification timestamp associated with a time of the modification;

determine among the one or more log entries, based on the analysis of the log, a set of updates performed on the existing contact information, wherein the set of updates comprises the additional contact information and is absent the existing contact information of the contact; and

transmit the set of updates comprising the additional contact information of the log entry and the modification timestamp of the log entry over the network to the client.

18. The system of claim 17 , wherein each of the one or more log entries includes a respective update performed on contact information of the one or more contacts.

19. A machine-readable medium comprising instructions stored therein, which when executed by a machine, cause the machine to perform operations comprising:

receiving a request for a set of updates for existing contact information of a contact of one or more contacts, wherein the request is received over a network from a client device and comprises a synchronization timestamp associated with a previous synchronization time of the client device;

analyzing, based on the synchronization timestamp associated with the previous synchronization time of the client device, a log comprising one or more log entries, wherein the log is distinct from the one or more contacts, wherein a log entry of the log indicates a modification to the contact with the existing contact information, and wherein the log entry comprises additional contact information added to the existing contact information of the contact and a modification timestamp associated with a time of the modification;

determining, based on the analysis of the log, the set of updates based on the one or more log entries and the synchronization timestamp, wherein the set of updates comprises the additional contact information of the contact and is absent the existing contact information of the contact; and

transmitting the set of updates comprising the additional contact information of the log entry and the modification timestamp of the log entry over the network to the client device.

20. A machine-readable medium comprising instructions stored therein, which when executed by a machine, cause the machine to:

receive a request for a set of updates for existing contact information of a contact of one or more contacts, wherein the request is received over a network from a client and comprises a synchronization timestamp associated with a previous synchronization time of the client;

analyze, based on the synchronization timestamp associated with the previous synchronization time of the client, a log comprising one or more log entries, wherein the log is distinct from the one or more contacts, wherein a log entry of the log indicates a modification to the contact with the existing contact information, and wherein the log entry comprises additional contact information added to the existing contact information of the contact and a modification timestamp associated with a time of the modification;

determine, based on the analysis of the log, the set of updates based on the one or more log entries and the synchronization timestamp, wherein the set of updates comprises the additional contact information of the contact and is absent the existing contact information of the contact;

store the set of updates comprising the additional contact information of the log entry and the modification timestamp of the log entry;

determine display names associated with the one or more contacts;

generate an index of prefixes based on the display names;

receive a search query for contact information from the client;

perform the search query on the index of prefixes; and

transmit to the client a portion of the set of updates based on results of the search query.

Assignments (2)
CHANGE OF NAME Recorded Dec 5, 2017
From: GOOGLE INC.
To: GOOGLE LLC
Reel/Frame 044695/0115 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 27, 2012
From: YOSHIKAWA, CHAD OWEN; VAN DEN DRIESSCHE, GEORGE BENJAMIN MICHAEL; GOODMAN, MARK STEPHEN; NELSON, PHILIP CHARLES; STAHL, MARK EDWARD
To: GOOGLE INC.
Reel/Frame 028855/0779 →