IP Library Patent Application 14621846
Patent Application
App. No. 14/621,846

TECHNIQUES FOR A PERSISTENT QUEUE FOR MESSAGE SYNCING

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 None
App. No.
14/621,846
Abstract

Techniques for a persistent queue for message syncing are described. A recipient inbound messaging component may receive an incoming update at a recipient update queue. A recipient queue management component may determine an incoming recipient sequence number for the recipient update queue. A recipient outbound messaging component may transmit the incoming update to the recipient messaging endpoint. Other embodiments are described and claimed.

Claims (75)

1 . A computer-implemented method, comprising:

receiving an incoming update at a recipient update queue, the recipient update queue associated with a recipient of the incoming update;

determining an incoming recipient sequence number for the recipient update queue, the incoming recipient sequence number determined by incrementing a highest current recipient sequence number for the recipient update queue;

assigning the incoming recipient sequence number to the incoming update;

adding the incoming update to the recipient update queue;

determining a current recipient sequence number for a current recipient update state of a recipient messaging endpoint associated with the recipient of the incoming update;

determining that the incoming recipient sequence number is greater than the current recipient sequence number for the current recipient update state of the recipient messaging endpoint;

transmitting the incoming update to the recipient messaging endpoint based on the determination that the incoming recipient sequence number is greater than the current recipient sequence number; and

updating the current recipient sequence number for the current recipient update state of the recipient messaging endpoint to be at least the incoming recipient sequence number.

2 . The method of claim 1 , wherein the incoming update corresponds to an atomic modification to a message inbox for the recipient messaging endpoint.

3 . The method of claim 1 , wherein the recipient messaging endpoint comprises one of a messaging application on a device and a web browser session.

4 . The method of claim 1 , wherein a plurality of current recipient sequence numbers are stored in association with the recipient update queue, wherein determining the current recipient sequence number for the current recipient update state of the recipient messaging endpoint comprises retrieving the current recipient sequence number based on an identifier for the recipient messaging endpoint, further comprising:

receiving an update request from the recipient messaging endpoint, the update request comprising the identifier for the recipient messaging endpoint.

5 . The method of claim 1 , wherein a plurality of current recipient sequence numbers are stored in association with the recipient update queue, each of the plurality of current recipient sequence numbers associated with a different recipient messaging endpoint, further comprising:

determining that every current recipient sequence number of the plurality of current recipient sequence numbers is greater than a sequence number for an old update stored in the recipient update queue; and

removing the old update from the recipient update queue in response to the determination that every current recipient sequence number of the plurality of current recipient sequence numbers is greater than the sequence number for the old update.

6 . The method of claim 1 , comprising:

receiving a notification of an opening of a network connection with the recipient messaging endpoint; and

retrieving the current recipient sequence number for the current recipient update state of the recipient messaging endpoint in response to receiving the notification of the opening of the network connection.

7 . The method of claim 1 , comprising:

checking, in response to receiving the incoming update at the recipient update queue, whether a network connection is already open with the recipient messaging endpoint;

determining that the network connection is already open with the recipient messaging endpoint; and

determining the current recipient sequence number for the current recipient update state of the recipient messaging endpoint in response to the determination that the network connection is already open with the recipient messaging endpoint.

8 . The method of claim 1 , the incoming update received at the recipient update queue from a sender update queue associated with a sender of the incoming update, comprising:

receiving the incoming update at the sender update queue from a sender messaging endpoint;

determining an incoming sender sequence number for the sender update queue, the incoming sender sequence number determined by incrementing a highest current sender sequence number for the sender update queue;

assigning the incoming sender sequence number to the incoming update at the sender update queue;

adding the incoming update to the sender update queue; and

queuing a worker to forward the incoming update to the recipient update queue.

9 . The method of claim 8 , comprising:

determining a current sender sequence number for a current sender update state of a second sender messaging endpoint associated with the sender of the incoming update;

determining that the incoming sender sequence number is greater than the current sender sequence number for the current sender update state of the second sender messaging endpoint;

transmitting the incoming update to the second sender messaging endpoint based on the determination that that the incoming sender sequence number is greater than the current sender sequence number; and

updating the current sender sequence number for the current sender update state of the second sender messaging endpoint to be at least the incoming sender sequence number.

10 . The method of claim 1 , the incoming update received at the recipient update queue from a group discussion thread update queue, the group discussion thread update queue associated with a group discussion thread, comprising:

receiving the incoming update at the group discussion thread update queue from a sender messaging queue;

determining an incoming group discussion thread sequence number for the group discussion thread update queue, the incoming group discussion thread sequence number determined by incrementing a highest current group discussion thread sequence number for the group discussion thread update queue;

assigning the incoming group discussion thread sequence number to the incoming update at the group discussion thread update queue;

adding the incoming update to the group discussion thread update queue; and

queuing one or more workers to forward the incoming update to one or more recipient update queues, wherein each of the one or more recipient update queues is associated with a follower of the group discussion thread.

11 . An apparatus, comprising:

a processor circuit on a device;

a recipient inbound messaging component operative on the processor circuit to receive an incoming update at a recipient update queue, the recipient update queue associated with a recipient of the incoming update;

a recipient queue management component operative on the processor circuit to determine an incoming recipient sequence number for the recipient update queue, the incoming recipient sequence number determined by incrementing a highest current recipient sequence number for the recipient update queue, assign the incoming recipient sequence number to the incoming update, add the incoming update to the recipient update queue, determine a current recipient sequence number for a current recipient update state of a recipient messaging endpoint associated with the recipient of the incoming update, determine that the incoming recipient sequence number is greater than the current recipient sequence number for the current recipient update state of the recipient messaging endpoint, and update the current recipient sequence number for the current recipient update state of the recipient messaging endpoint to be at least the incoming recipient sequence number; and

a recipient outbound messaging component operative on the processor circuit to transmit the incoming update to the recipient messaging endpoint based on the determination that the incoming recipient sequence number is greater than the current recipient sequence number.

12 . The apparatus of claim 11 , wherein the incoming update corresponds to an atomic modification to a message inbox for the recipient messaging endpoint, wherein the recipient messaging endpoint comprises one of a messaging application on a device and a web browser session.

13 . The apparatus of claim 11 , wherein a plurality of current recipient sequence numbers are stored in association with the recipient update queue, each of the plurality of current recipient sequence numbers associated with a different recipient messaging endpoint, further comprising:

the recipient queue management component operative to determine that every current recipient sequence number of the plurality of current recipient sequence numbers is greater than a sequence number for an old update stored in the recipient update queue and remove the old update from the recipient update queue in response to the determination that every current recipient sequence number of the plurality of current recipient sequence numbers is greater than the sequence number for the old update.

14 . The apparatus of claim 11 , further comprising:

the recipient outbound messaging component operative to determine, in response to the determination that the incoming recipient sequence number is greater than the current recipient sequence number for the current recipient update state of the recipient messaging endpoint, that a network connection is already open with the recipient messaging endpoint and to transmit the incoming update to the recipient messaging endpoint based on the determination that the network connection is already open.

15 . The apparatus of claim 11 , the incoming update received at the recipient update queue from a sender update queue associated with a sender of the incoming update, further comprising:

a sender inbound messaging component operative to receive the incoming update at the sender update queue from a sender messaging endpoint;

a sender queue management component operative to determine an incoming sender sequence number for the sender update queue, the incoming sender sequence number determined by incrementing a highest current sender sequence number for the sender update queue, assign the incoming sender sequence number to the incoming update, add the incoming update to the sender update queue, and queue a worker to forward the incoming update to the recipient update queue.

16 . At least one computer-readable storage medium comprising instructions that, when executed, cause a system to:

receive an incoming update at a recipient update queue, the recipient update queue associated with a recipient of the incoming update;

determine an incoming recipient sequence number for the recipient update queue, the incoming recipient sequence number determined by incrementing a highest current recipient sequence number for the recipient update queue.

assign the incoming recipient sequence number to the incoming update;

add the incoming update to the recipient update queue;

determine a current recipient sequence number for a current recipient update state of a recipient messaging endpoint associated with the recipient of the incoming update;

determine that the incoming recipient sequence number is greater than the current recipient sequence number for the current recipient update state of the recipient messaging endpoint;

transmit the incoming update to the recipient messaging endpoint based on the determination that the incoming recipient sequence number is greater than the current recipient sequence number; and

update the current recipient sequence number for the current recipient update state of the recipient messaging endpoint to be at least the incoming recipient sequence number.

17 . The computer-readable storage medium of claim 16 , wherein the incoming update corresponds to an atomic modification to a message inbox for the recipient messaging endpoint, wherein the recipient messaging endpoint comprises one of a messaging application on a device and a web browser session.

18 . The computer-readable storage medium of claim 16 , comprising further instructions that, when executed, cause a system to:

determine that a plurality of updates in the recipient update queue are each associated with a sequence number greater than the current recipient sequence number of the recipient messaging endpoint; and

transmit the plurality of update to the recipient messaging endpoint based on the determination that the plurality of updates in the recipient update queue are each associated with a sequence number greater than the current recipient sequence number.

19 . The computer-readable storage medium of claim 16 , wherein a plurality of current recipient sequence numbers are stored in association with the recipient update queue, each of the plurality of current recipient sequence numbers associated with a different recipient messaging endpoint, comprising further instructions that, when executed, cause a system to:

determine that every current recipient sequence number of the plurality of current recipient sequence numbers is greater than a sequence number for an old update stored in the recipient update queue; and

remove the old update from the recipient update queue in response to the determination that every current recipient sequence number of the plurality of current recipient sequence numbers is greater than the sequence number for the old update.

20 . The computer-readable storage medium of claim 16 , the incoming update received at the recipient update queue from a sender update queue associated with a sender of the incoming update, comprising further instructions that, when executed, cause a system to:

receive the incoming update at the sender update queue from a sender messaging endpoint;

determine an incoming sender sequence number for the sender update queue, the incoming sender sequence number determined by incrementing a highest current sender sequence number for the sender update queue;

assign the incoming sender sequence number to the incoming update at the sender update queue;

add the incoming update to the sender update queue; and

queue a worker to forward the incoming update to the recipient update queue.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 17, 2017
From: JENKS, JASON CURTIS; IYER, RAHUL; KATHURIA, VISHAL; GEORGIOU, THOMAS APOSTOLOS; FEIN, JEREMY DAVID
To: FACEBOOK, INC.
Reel/Frame 042410/0162 →