IP Library Granted Patent US 10,218,646
Granted Patent B2
US 10,218,646 · App. 15/799,659 · Granted Feb 26, 2019

Systems and methods for storing message data

Inventor: Younes Hafri (Lausanne, CH)
Assignee: Satori Worldwide, LLC
H04L49/9042H04L47/722H04L47/826H04L51/04H04L51/14H04L67/2838H04L67/2842
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,218,646
App. No.
15/799,659
Granted
Feb 26, 2019
Kind
B2
Abstract

Methods, systems, and apparatus, including computer programs encoded on a computer storage medium, are described for storing message data in a PubSub system. In certain examples, messages are received from a plurality of publishers for a plurality of channels. The messages are stored in a writable portion of a respective buffer for the channel according to an order, wherein messages in the writable portion of the buffer are inaccessible to subscribers. The method may also include advancing a pointer demarcating a boundary between the writable portion and a readable portion of the buffer such that the message is in the readable portion after the pointer has advanced.

Claims (40)

1. A method, comprising:

receiving messages on each of a plurality of channels;

storing, by one or more computer processors, each message of each of the plurality of channels in a writable portion of a respective buffer for the channel according to an order, wherein messages in the writable portion of the buffer are inaccessible to subscribers; and

advancing, by the one or more computer processors, a pointer demarcating a boundary between the writable portion and a readable portion of the buffer such that the message is in the readable portion after the pointer has advanced.

2. The method of claim 1 , further comprising:

allowing one or more subscribers to read from the readable portion of one or more of the buffers during the storing.

3. The method of claim 1 , wherein the pointer is advanced in an atomic operation.

4. The method of claim 3 , wherein the atomic operation cannot be interrupted by another process or thread of execution.

5. The method of claim 1 , wherein storing each message comprises:

storing a length of the message at a first location in the writable portion; and

storing the message in the writable portion following the first location.

6. The method of claim 1 , wherein advancing the pointer demarcating the boundary between the writable portion and the readable portion of the buffer comprises:

storing a sum of a length of the message and a current value of the pointer in the pointer.

7. The method of claim 1 , wherein each message is stored in the writable portion and moved to the readable portion before another message is stored in the writable portion.

8. The method of claim 1 , wherein each buffer for a particular channel expires at a different time based on a time-to-live for the buffer.

9. The method of claim 1 , wherein each buffer comprises a respective time-to-live upon expiration of which will cause the buffer to be inaccessible to publishers and subscribers.

10. The method of claim 1 , wherein the order comprises the order in which messages for the channel are received.

11. A system, comprising:

one or more computer processors programmed to perform operations to:

receive messages on each of a plurality of channels;

store each message of each of the plurality of channels in a writable portion of a respective buffer for the channel according to an order,

wherein messages in the writable portion of the buffer are inaccessible to subscribers; and

advance a pointer demarcating a boundary between the writable portion and a readable portion of the buffer such that the message is in the readable portion after the pointer has advanced.

12. The system of claim 11 , wherein the operations are further to:

allow one or more subscribers to read from the readable portion of one or more of the buffers during the store.

13. The system of claim 11 , wherein the pointer is advanced in an atomic operation.

14. The system of claim 11 , wherein to store each message the one or more computer processors are further to:

store a length of the message at a first location in the writable portion; and

store the message in the writable portion following the first location.

15. The system of claim 11 , wherein to advance the pointer demarcating the boundary between the writable portion and the readable portion of the buffer the one or more computer processors are further to:

store a sum of a length of the message and a current value of the pointer in the pointer.

16. The system of claim 11 , wherein each message is stored in the writable portion and moved to the readable portion before another message is stored in the writable portion.

17. The system of claim 11 , wherein each buffer for a particular channel expires at a different time based on a time-to-live for the buffer.

18. The system of claim 11 , wherein each buffer comprises a respective time-to-live upon expiration of which will cause the buffer to be inaccessible to publishers and subscribers.

19. The system of claim 11 , wherein the order comprises an order in which messages for the channel are received.

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:

receive messages on each of a plurality of channels;

store, by the one or more computer processors, each message of each of the plurality of channels in a writable portion of a respective buffer for the channel according to an order,

wherein messages in the writable portion of the buffer are inaccessible to subscribers; and

advance, by the one or more computer processors, a pointer demarcating a boundary between the writable portion and a readable portion of the buffer such that the message is in the readable portion after the pointer has advanced.

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 Jan 11, 2018
From: MACHINE ZONE, INC.
To: SATORI WORLDWIDE, LLC
Reel/Frame 044598/0420 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 1, 2017
From: HAFRI, YOUNES
To: MACHINE ZONE, INC.
Reel/Frame 044002/0441 →
Continuity (4)
Continuation 15290695 · Oct 11, 2016
Continuation PCTUS2016037358 · Jun 14, 2016
Continuation 14879661 · Oct 9, 2015
Related Publication 20180069810A1 · Mar 8, 2018