IP Library Granted Patent US 10,110,727
Granted Patent B2
US 10,110,727 · App. 15/842,870 · Granted Oct 23, 2018

Systems and methods for event stream management

Inventors: Jason Prado (San Francisco, CA); David Michael Renie (Mountain View, CA); Basel Al-Naffouri (San Francisco, CA); Eahab Ibrahim (Santa Clara, CA); John Pongsajapan (San Francisco, CA)
Assignee: GOOGLE LLC
H04M1/72552H04L41/5093H04L51/16H04L51/34
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 10,110,727
App. No.
15/842,870
Granted
Oct 23, 2018
Kind
B2
Abstract

A system for managing event streams is provided that includes a volatile memory, a non-volatile memory, and a processor. The volatile memory is configured to store, for each of a plurality of event streams associated with the client device, metadata indicative of events not yet delivered to a client device and the content associated with only a most recent event of the event stream. The non-volatile memory is configured to store the content associated with each of undelivered events. The processor is configured to, upon receiving a request from the client device, retrieve from the volatile memory, without accessing the non-volatile memory, data indicative of a current state of an event stream associated with the client device. The processor is further configured to deliver the retrieved data indicative of the current state of the event stream.

Claims (44)

1. A method comprising:

receiving, by a processor, data of an event stream, each event in the event stream to be delivered electronically to a client device over a network;

storing a data structure indicative of one or more events in the event stream that are not yet delivered to the client device, wherein the event stream is assigned a unique conversation identifier, and wherein the data structure includes:

one or more entries corresponding to the one or more events in the event stream, wherein each of the one or more entries includes a communication number, a recipient identifier associated with a recipient, and a status; and

content of a most recent event of the one or more events in the event stream labeled with the communication number for the most recent event and a sender identifier associated with the most recent event;

retrieving, by the processor, from the data structure, data indicative of a current state of the event stream, wherein the current state of the event stream includes a number of events not yet delivered to the client device and the content of the most recent event in the event stream; and

sending, by the processor, the retrieved data indicative of the current state of the event stream to the client device.

2. The method of claim 1 , further comprising receiving an event stream update request from the client device, wherein the retrieving is performed in response to receiving the event stream update request.

3. The method of claim 1 , further comprising, after the sending, deleting the one or more entries corresponding to the one or more events in the event stream from the data structure.

4. The method of claim 1 , wherein the client device is associated with the recipient.

5. The method of claim 1 , wherein the communication number in each of the one or more entries is a timestamp used to identify the event.

6. The method of claim 1 , wherein the status in each of the one or more entries is one of an undelivered event status or an unread event status.

7. The method of claim 1 , wherein storing the data structure comprises storing an in-memory table in a volatile memory.

8. The method of claim 1 , further comprising storing a second data structure in an on-disk table, wherein the second data structure includes one or more entries that each include content of a respective individual event of the one or more events and a sender identifier associated with the individual event, wherein each of the one or more entries is labeled by the unique conversation identifier and a communication number for the respective individual event.

9. The method of claim 1 , further comprising:

receiving, by the processor, additional data of the event stream, wherein the additional data includes an additional event in the event stream to be delivered electronically to the client device over the network; and

in response to receiving the additional data, overwriting the content of the most recent event in the data structure with content of the additional event labeled with a communication number of the additional event and a sender identifier associated with the additional event.

10. The method of claim 9 , wherein the additional event is associated with a timestamp that corresponds to a time that is later than a time corresponding to a timestamp of the most recent event.

11. A system comprising:

one or more processors; and

a non-transitory computer-readable medium including instructions that when operated upon by the one or more processors cause the one or more processors to perform operations comprising:

receiving data of an event stream, each event in the event stream to be delivered electronically to a client device over a network;

storing a data structure indicative of one or more events in the event stream that are not yet delivered to the client device, wherein the event stream is assigned a unique conversation identifier, and wherein the data structure includes:

one or more entries corresponding to the one or more events in the event stream, wherein each of the one or more entries includes a communication number, a recipient identifier associated with a recipient, and a status; and

content of a most recent event of the one or more events in the event stream labeled with the communication number for the most recent event and a sender identifier associated with the most recent event;

retrieving from the data structure, data indicative of a current state of the event stream, wherein the current state of the event stream includes a number of events not yet delivered to the client device and the content of the most recent event in the event stream; and

sending the retrieved data indicative of the current state of the event stream to the client device.

12. The system of claim 8 , the operations further comprising receiving an event stream update request from the client device, wherein the retrieving is performed in response to receiving the event stream update request.

13. The system of claim 8 , the operations further comprising, after the sending, deleting the one or more entries corresponding to the one or more events in the event stream from the data structure.

14. The system of claim 8 , wherein the communication number in each of the one or more entries is a timestamp used to identify the event.

15. The system of claim 8 , the operations further comprising storing a second data structure in an on-disk table, wherein the second data structure includes one or more entries that each include content of a respective individual event of the one or more events and a sender identifier associated with the individual event, wherein each of the one or more entries is labeled by the unique conversation identifier and a communication number for the respective individual event.

16. A non-transitory computer-readable medium storing a computer program that is executable by at least one processor, the computer program including instructions that cause the at least one processor to perform operations comprising:

receiving data of an event stream, each event in the event stream to be delivered electronically to a client device over a network;

storing a data structure indicative of one or more events in the event stream that are not yet delivered to the client device, wherein the event stream is assigned a unique conversation identifier, and wherein the data structure includes:

one or more entries corresponding to the one or more events in the event stream, wherein each of the one or more entries includes a communication number, a recipient identifier associated with a recipient, and a status; and

content of a most recent event of the one or more events in the event stream labeled with the communication number for the most recent event and a sender identifier associated with the most recent event;

retrieving from the data structure, data indicative of a current state of the event stream, wherein the current state of the event stream includes a number of events not yet delivered to the client device and the content of the most recent event in the event stream; and

sending the retrieved data indicative of the current state of the event stream to the client device.

17. The non-transitory computer-readable medium of claim 16 , wherein the operations further comprise receiving an event stream update request from the client device, wherein the retrieving is performed in response to receiving the event stream update request.

18. The non-transitory computer-readable medium of claim 16 , wherein the operations further comprise, after the sending, deleting the one or more entries corresponding to the one or more events in the event stream from the data structure.

19. The non-transitory computer-readable medium of claim 16 , wherein the operations further comprise:

receiving additional data of the event stream, wherein the additional data includes an additional event in the event stream to be delivered electronically to the client device over the network; and

in response to receiving the additional data, overwriting the content of the most recent event in the data structure with content of the additional event labeled with a communication number of the additional event and a sender identifier associated with the additional event.

20. The non-transitory computer-readable medium of claim 19 , wherein the additional event is associated with a timestamp that corresponds to a time that is later than a time corresponding to a timestamp of the most recent event.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 9, 2018
From: PRADO, JASON; RENIE, DAVID MICHAL; AL-NAFFOURI, BASEL; IBRAHIM, EAHAB; PONGSAJAPAN, JOHN
To: GOOGLE INC.
Reel/Frame 044570/0208 →
CHANGE OF NAME Recorded Jan 9, 2018
From: GOOGLE INC.
To: GOOGLE LLC
Reel/Frame 045027/0961 →
Continuity (4)
Continuation 15451109 · Mar 6, 2017
Continuation 14886035 · Oct 17, 2015
Continuation 13355287 · Jan 20, 2012
Related Publication 20180109670A1 · Apr 19, 2018