IP Library Granted Patent US 9,942,339
Granted Patent B1
US 9,942,339 · App. 15/586,773 · Granted Apr 10, 2018

Systems and methods for providing messages to multiple subscribers

Inventor: Igor Milyakov (Sunnyvale, CA)
Assignee: SATORI WORLDWIDE, LLC
H04L67/26H04L47/286H04L47/722
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 9,942,339
App. No.
15/586,773
Granted
Apr 10, 2018
Kind
B1
Abstract

Methods, systems, and apparatus, including computer programs encoded on a computer storage device, for: receiving messages from a plurality of publishers; assigning each of the messages to one of a plurality of channels, wherein each channel comprises an ordered plurality of messages; storing messages of each of the channels in respective storage buffers according to the order, wherein each storage buffer comprises a respective time-to-live of a first time duration; for a particular channel, retrieving messages of the particular channel from respective storage buffers; storing the retrieved messages of the particular channel in a delivery buffer, the delivery buffer comprising data blocks, wherein each data block comprises a respective time-to-live of a second time duration; and providing the messages stored in the delivery buffer to a plurality of subscribers of the particular channel.

Claims (54)

1. A computer-implemented method, comprising:

assigning each of a plurality of messages to one of a plurality of channels;

storing messages of each of the channels in one or more respective storage buffers according to an order,

wherein each storage buffer comprises a respective time-to-live of a first time duration;

retrieving messages of a particular channel from respective storage buffers;

storing the retrieved messages of the particular channel in a delivery buffer according to the order,

wherein the delivery buffer comprises one or more data blocks, and

wherein each data block comprises a respective time-to-live of a second time duration; and

providing the messages stored in the delivery buffer to a plurality of subscribers of the particular channel.

2. The method of claim 1 , wherein storing the retrieved messages of the particular channel in the delivery buffer according to the order comprises:

storing retrieved messages of the particular channel earlier in the order in data blocks having times-to-live that will expire sooner than data blocks used to store retrieved messages of the particular channel later in the order.

3. The method of claim 1 , wherein the delivery buffer comprises a linked list of the data blocks, and wherein retrieved messages last in the order of the particular channel are stored in a tail data block of the linked list.

4. The method of claim 1 , wherein providing the messages stored in the delivery buffer to the plurality of subscribers of the particular channel comprises:

determining a connection status of a particular subscriber; and

based thereon, providing one or more of the messages stored in the delivery buffer to the particular subscriber.

5. The method of claim 1 , wherein the delivery buffer resides on a first computing node, and wherein the storage buffers reside on respective second computing nodes that are different from the first computing node.

6. The method of claim 1 , wherein the delivery buffer comprises a visible area and an invisible area.

7. The method of claim 1 , further comprising:

receiving the plurality of messages from a plurality of publishers.

8. The method of claim 3 , wherein storing the retrieved messages of the particular channel in the delivery buffer according to the order comprises:

removing from the linked list one or more data blocks at a head of the linked list, wherein the removed data blocks comprise respective times-to-live that have expired.

9. The method of claim 6 , wherein a subscriber with a pre-existing connection is permitted to access data from both the visible area and the invisible area.

10. The method of claim 6 , wherein a subscriber with a new connection is permitted to access data from the visible area and not permitted to access data from the invisible area.

11. A system, comprising:

one or more computer processors programmed to perform operations to:

assign each of a plurality of messages to one of a plurality of channels;

store messages of each of the channels in one or more respective storage buffers according to an order,

wherein each storage buffer comprises a respective time-to-live of a first time duration;

retrieve messages of a particular channel from respective storage buffers;

store the retrieved messages of the particular channel in a delivery buffer according to the order,

wherein the delivery buffer comprises one or more data blocks, and

wherein each data block comprises a respective time-to-live of a second time duration; and

provide the messages stored in the delivery buffer to a plurality of subscribers of the particular channel.

12. The system of claim 11 , wherein to store the retrieved messages of the particular channel in the delivery buffer according to the order, the one or more computer processors to:

store retrieved messages of the particular channel earlier in the order in data blocks having times-to-live that will expire sooner than data blocks used to store retrieved messages of the particular channel later in the order.

13. The system of claim 11 , wherein the delivery buffer comprises a linked list of the data blocks, and wherein retrieved messages last in the order of the particular channel are stored in a tail data block of the linked list.

14. The system of claim 11 , wherein to provide the messages stored in the delivery buffer to the plurality of subscribers of the particular channel, the one or more computer processors to:

determine a connection status of a particular subscriber; and

based thereon, provide one or more of the messages stored in the delivery buffer to the particular subscriber.

15. The system of claim 11 , wherein the delivery buffer resides on a first computing node, and wherein the storage buffers reside on respective second computing nodes that are different from the first computing node.

16. The system of claim 11 , wherein the delivery buffer comprises a visible area and an invisible area.

17. The system of claim 13 , wherein to store the retrieved messages of the particular channel in the delivery buffer according to the order, the one or more computer processors to:

remove from the linked list one or more data blocks at a head of the linked list, wherein the removed data blocks comprise respective times-to-live that have expired.

18. The system of claim 16 , wherein a subscriber device with a pre-existing connection is permitted to access data from both the visible area and the invisible area.

19. The system of claim 16 , wherein a subscriber device with a new connection is permitted to access data from the visible area and not permitted to access data from the invisible area.

20. A non-transitory computer-readable medium having instructions stored thereon that when executed by one or more computer processors, cause the one or more computer processors to:

assign each of a plurality of messages to one of a plurality of channels;

store, by the one or more computer processors, messages of each of the channels in one or more respective storage buffers according to an order,

wherein each storage buffer comprises a respective time-to-live of a first time duration;

retrieve messages of a particular channel from respective storage buffers;

store the retrieved messages of the particular channel in a delivery buffer according to the order,

wherein the delivery buffer comprises one or more data blocks, and

wherein each data block comprises a respective time-to-live of a second time duration; and

provide, by the one or more computer processors, the messages stored in the delivery buffer to a plurality of subscribers of the particular channel.

Assignments (6)
RELEASE OF SECURITY INTEREST Recorded May 19, 2020
From: COMERICA BANK
To: SATORI WORLDWIDE, LLC
Reel/Frame 052707/0769 →
RELEASE OF SECURITY INTEREST Recorded May 19, 2020
From: MGG INVESTMENT GROUP LP, AS COLLATERAL AGENT
To: MACHINE ZONE, INC.; SATORI WORLDWIDE, LLC; COGNANT LLC
Reel/Frame 052706/0917 →
SECURITY INTEREST Recorded May 22, 2018
From: SATORI WORLDWIDE, LLC
To: COMERICA BANK
Reel/Frame 046215/0159 →
NOTICE OF SECURITY INTEREST -- PATENTS Recorded Feb 2, 2018
From: MACHINE ZONE, INC.; SATORI WORLDWIDE, LLC; COGNANT LLC
To: MGG INVESTMENT GROUP LP, AS COLLATERAL AGENT
Reel/Frame 045237/0861 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 13, 2017
From: MACHINE ZONE, INC.
To: SATORI WORLDWIDE, LLC
Reel/Frame 044428/0652 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 8, 2017
From: MILYAKOV, IGOR
To: MACHINE ZONE, INC.
Reel/Frame 042736/0803 →
Continuity (1)
Continuation 15274281 · Sep 23, 2016