IP Library Granted Patent US 8,140,618
Granted Patent B2
US 8,140,618 · App. 11/381,702 · Granted Mar 20, 2012

Methods and systems for bandwidth adaptive N-to-N communication in a distributed system

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 8,140,618
App. No.
11/381,702
Granted
Mar 20, 2012
Kind
B2
Abstract

Methods and systems for bandwidth adaptive computing device to computing device communication are described. Bandwidth adaptive communication includes receiving a communication from a first participant, storing the payload data of the communication in a channel memory element associated with the first participant, and transmitting the payload data to a second participant.

Claims (39)

1. A method for bandwidth adaptive communication among a plurality of participants in a distributed system, the method comprising:

receiving, a server computing device remotely located from each of the plurality of participant computing devices, a plurality of communications from a first participant, each communication including metadata and payload data;

storing, for each received communication, the payload data in a channel memory element, at the server computing device, the channel memory element comprising a plurality of memory locations, each memory location associated with a respective one of the plurality of participants so that all participants read from each of the plurality of memory locations but each participant only writes to a memory location with which the participant is associated, one of the plurality of memory locations that is associated with the first participant being selected following the receipt of each communication using the metadata;

upon a second participant being able to receive communications from the server computing device;

comparing, by the server computing device, contents of the channel memory element to a record of a copy of the channel memory element locally maintained by the second participant; and

transmitting, by the server computing device to the second participant, payload data stored in a first memory location associated with the first participant upon the determination that the comparing between the contents of the channel memory element and the record of the copy of the channel memory element locally maintained by the second participant reveals an update to the payload data, stored in the first memory location; and

upon a third participant being able to receive communications from the server computing device;

comparing, by the server computing device, the contents of the channel memory element to a record of a copy of the channel memory element locally maintained by the third participant; and

transmitting, by the server computing device to the third participant, the payload data stored in the first memory location associated with the first participant upon the determination that the comparing between the contents of the channel memory element and the record of the copy of the channel memory element locally maintained by the third participant reveals art update to the payload data stored in the first memory location,

the second participants communicating via a connection which permits the second participant to receive more data from the server computing device in a given time period than the third participant and the payload data stored in the first memory location being the payload data stored in the first memory location to the second participant more often in the given time period than to the third participant.

2. The method of claim 1 wherein a received communication comprises a participant identifier and payload data.

3. The method of claim 1 wherein a received communication represents a state of the first participant and comprises metadata.

4. The method of claim 1 wherein the step of storing the payload data in a channel memory element comprises storing the payload data in one of a plurality of array locations, the one of the plurality of array locations selected using the metadata and associated with the first participant.

5. The method of claim 4 wherein the step of transmitting payload data to the second participant comprises transmitting the array to the second and third participants.

6. The method of claim 1 wherein the step of transmitting payload data to the second participant comprises transmitting the payload data to a second participant in response to information identifying the first participant payload data most-recently received from the first participant.

7. The method of claim 1 wherein the step of transmitting payload data to the second participant comprises transmitting the payload data to a second participant in response to a request from the second participant.

8. The method of claim 1 wherein the step of transmitting payload data to the second participant comprises transmitting the payload data to a second participant in response to a request from the second participant, the request identifying the first participant payload data most recently stored by the second participant.

9. The method of claim 1 further comprising:

receiving a communication from the second participant, the communication including metadata and payload data;

storing the payload data in one of a plurality of memory locations, the one of the plurality of memory locations selected using the metadata and associated with the second participant; and

transmitting the payload data to the first participant.

10. The method of claim 1 wherein first payload data from a first communication received from the first participant is stored in the first memory location associated with the first participant and second payload data from a second communication received from the first participant is stored in a second memory location associated with the first participant.

11. A server computing system for enabling bandwidth adaptive communication among a plurality of participants in a distributed system, the server computing system comprising:

a channel memory element comprising a plurality of memory locations, each memory location associated with a representative one of the plurality of participants so that all participants read from each of the set of the plurality of memory locations, but each participant only writes to a memory location with which the participant is associated; and

a processor for executing computer readable instructions that, when executed, cause the server computing device to:

store state data received from a first participant in the channel memory element;

upon a second participant being able to receive communications from the server computing device;

compare contents of the channel memory element to a record of a copy of the channel memory element locally maintained by the second participant; and

transmit, to the second participant, state data stored in a first memory location associated with the first participant upon the determination that the comparing between the contents of the channel memory element and the record of the copy of the channel memory element locally maintained by the second participant reveals an update to the state data stored in the first memory location; and

upon a third participant being able to receive communications from the server computing device;

compare the contents of the channel memory element to a record of a copy of the channel memory element locally maintained by the third participant; and

transmit, to the third participant, state data stored in the first memory location associated with the first participant upon the determination that the comparing between the contents of the channel memory element and the record of the copy of the channel memory element locally maintained by the third participant reveals art update to the state data stored in the first memory location,

the state data stored in the first memory location being transmitted from the server computing device to the second participant more often in a given time period than to the third participants, the second participants having a connection with the server computing device which permits the second participant to receive more data from the server computing device in the given time period than the third participant can with the server computing device.

12. The system of claim 11 wherein the state data received from the first participant comprises metadata and payload data.

13. The system of claim 11 wherein the state data received from the first participant comprises a participant identifier and payload data.

14. The system of claim 11 wherein the server transmits stored state data to a second participant in response to a request from the second participant.

15. The system of claim 11 wherein the server transmits stored state data to a second participant in response to a request from the second participant, the request identifying the first participant payload data most recently stored by the second participant.

16. The system of claim 11 wherein the server overwrites stored state data when new state data is received.

17. The system of claim 11 wherein the processor further executes computer readable instructions that cause the server computing system to store state data received from each of the second and third participants in the channel memory element, and wherein the state data is received from the second participant more often that from the third participant.

Assignments (15)
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS (REEL/FRAME 053667/0169, REEL/FRAME 060450/0171, REEL/FRAME 063341/0051) Recorded Mar 15, 2024
From: BARCLAYS BANK PLC, AS COLLATERAL AGENT
To: GOTO GROUP, INC. (F/K/A LOGMEIN, INC.)
Reel/Frame 066800/0145 →
SECURITY INTEREST Recorded Feb 16, 2024
From: GOTO COMMUNICATIONS, INC.; GOTO GROUP, INC.; LASTPASS US LP
To: U.S. BANK TRUST COMPANY, NATIONAL ASSOCIATION, AS THE NOTES COLLATERAL AGENT
Reel/Frame 066614/0355 →
SECURITY INTEREST Recorded Feb 16, 2024
From: GOTO COMMUNICATIONS, INC.,; GOTO GROUP, INC., A; LASTPASS US LP,
To: U.S. BANK TRUST COMPANY, NATIONAL ASSOCIATION, AS THE NOTES COLLATERAL AGENT
Reel/Frame 066614/0402 →
SECURITY INTEREST Recorded Feb 7, 2024
From: GOTO GROUP, INC.,; GOTO COMMUNICATIONS, INC.; LASTPASS US LP
To: BARCLAYS BANK PLC, AS COLLATERAL AGENT
Reel/Frame 066508/0443 →
CHANGE OF NAME Recorded Apr 8, 2022
From: LOGMEIN, INC.
To: GOTO GROUP, INC.
Reel/Frame 059644/0090 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS (SECOND LIEN) Recorded Feb 16, 2021
From: BARCLAYS BANK PLC, AS COLLATERAL AGENT
To: LOGMEIN, INC.
Reel/Frame 055306/0200 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Sep 1, 2020
From: LOGMEIN, INC.
To: BARCLAYS BANK PLC, AS COLLATERAL AGENT
Reel/Frame 053667/0079 →
NOTES LIEN PATENT SECURITY AGREEMENT Recorded Sep 1, 2020
From: LOGMEIN, INC.
To: U.S. BANK NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 053667/0032 →
FIRST LIEN PATENT SECURITY AGREEMENT Recorded Sep 1, 2020
From: LOGMEIN, INC.
To: BARCLAYS BANK PLC, AS COLLATERAL AGENT
Reel/Frame 053667/0169 →
RELEASE OF SECURITY INTEREST RECORDED AT REEL/FRAME 041588/0143 Recorded Aug 31, 2020
From: JPMORGAN CHASE BANK, N.A.
To: LOGMEIN, INC.; GETGO, INC.
Reel/Frame 053650/0978 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 4, 2019
From: GETGO, INC.
To: LOGMEIN, INC.
Reel/Frame 049843/0833 →
SECURITY INTEREST Recorded Feb 1, 2017
From: GETGO, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 041588/0143 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 8, 2016
From: CITRIX SYSTEMS, INC.
To: GETGO, INC.
Reel/Frame 039970/0670 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 3, 2014
From: CITRIX ONLINE, LLC
To: CITRIX SYSTEMS, INC.
Reel/Frame 032339/0447 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 21, 2006
From: ALEXANDROV, ALBERT; SAAVEDRA, RAFAEL; CHALMERS, ROBERT; SRINIVASAN, KAVITHA
To: CITRIX ONLINE, LLC.
Reel/Frame 017819/0900 →