IP Library Granted Patent US 8,732,242
Granted Patent B2
US 8,732,242 · App. 13/369,985 · Granted May 20, 2014

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,732,242
App. No.
13/369,985
Granted
May 20, 2014
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 (34)

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

receiving, at a server, a communication from a first participant computing device, the communication including metadata and payload data;

storing the payload data in a channel memory element of the server, the channel memory element comprising a plurality of memory locations, one of the plurality of memory locations selected using the metadata and associated with the first participant computing device;

comparing contents of the channel memory element to a first record, residing at the server, of a copy of the channel memory element locally maintained by a second participant computing device, the first record being associated with the second participant computing device, wherein the first record is different from the one of the plurality of memory locations selected using the metadata and associated with the first participant computing device;

transmitting the payload data to the second participant computing device and updating the first record, residing at the server, upon a determination that the comparing between the contents of the channel memory element and the first record, residing at the server, of the copy of the channel memory element locally maintained by the second participant computing device reveals an update to the payload data stored in the selected one of the plurality of memory locations;

comparing contents of the channel memory element to a second record, residing at the server, of a copy of the channel memory element locally maintained by a third participant computing device, the second record being associated with the third participant computing device, wherein the second record is different from the one of the plurality of memory locations selected using the metadata and associated with the first participant computing device; and

transmitting the payload data to the third participant computing device and updating the second record, residing at the server, upon a determination that the comparing between the contents of the channel memory element and the second record, residing at the server, of the copy of the channel memory element locally maintained by the third participant computing device reveals an update to the payload data stored in the selected one of the plurality of memory locations;

wherein, during a given time period, the payload data is equivalent to the first record more often than the payload data is equivalent to the second record.

2. A non-transitory computer-readable medium for bandwidth adaptive communication among a plurality of participants in a distributed system, the computer-readable medium comprising instructions which, when executed by one or more computers, cause the one or more computers to implement a method, the method comprising:

receiving, at a server, a communication from a first participant computing device, the communication including metadata and payload data;

storing the payload data in a channel memory element of the server, the channel memory element comprising a plurality of memory locations, one of the plurality of memory locations selected using the metadata and associated with the first participant computing device;

comparing contents of the channel memory element to a first record, residing at the server, of a copy of the channel memory element locally maintained by a second participant computing device, the first record being associated with the second participant computing device, wherein the first record is different from the one of the plurality of memory locations selected using the metadata and associated with the first participant computing device;

transmitting the payload data to the second participant computing device and updating the first record, residing at the server, upon a determination that the comparing between the contents of the channel memory element and the first record, residing at the server, of the copy of the channel memory element locally maintained by the second participant computing device reveals an update to the payload data stored in the selected one of the plurality of memory locations;

comparing contents of the channel memory element to a second record, residing at the server, of a copy of the channel memory element locally maintained by a third participant computing device, the second record being associated with the third participant computing device, wherein the second record is different from the one of the plurality of memory locations selected using the metadata and associated with the first participant computing device; and

transmitting the payload data to the third participant computing device and updating the second record, residing at the server, upon a determination that the comparing between the contents of the channel memory element and the second record, residing at the server, of the copy of the channel memory element locally maintained by the third participant computing device reveals an update to the payload data stored in the selected one of the plurality of memory locations;

wherein, during a given time period, the payload data is equivalent to the first record more often than the payload data is equivalent to the second record.

3. A system for bandwidth adaptive communication among a plurality of participants, the system comprising:

one or more processors; and

a memory comprising instructions which, when executed by one or more processors, cause the one or more processors to implement a method, the method comprising:

receiving, at a server, a communication from a first participant computing device, the communication including metadata and payload data;

storing the payload data in a channel memory element of the server, the channel memory element comprising a plurality of memory locations, one of the plurality of memory locations selected using the metadata and associated with the first participant computing device;

comparing contents of the channel memory element to a first record, residing at the server, of a copy of the channel memory element locally maintained by a second participant computing device, the first record being associated with the second participant computing device, wherein the first record is different from the one of the plurality of memory locations selected using the metadata and associated with the first participant computing device;

transmitting the payload data to the second participant computing device and updating the first record, residing at the server, upon a determination that the comparing between the contents of the channel memory element and the first record, residing at the server, of the copy of the channel memory element locally maintained by the second participant computing device reveals an update to the payload data stored in the selected one of the plurality of memory locations;

comparing contents of the channel memory element to a second record, residing at the server, of a copy of the channel memory element locally maintained by a third participant computing device, the second record being associated with the third participant computing device, wherein the second record is different from the one of the plurality of memory locations selected using the metadata and associated with the first participant computing device; and

transmitting the payload data to the third participant computing device and updating the second record, residing at the server, upon a determination that the comparing between the contents of the channel memory element and the second record, residing at the server, of the copy of the channel memory element locally maintained by the third participant computing device reveals an update to the payload data stored in the selected one of the plurality of memory locations;

wherein, during a given time period, the payload data is equivalent to the first record more often than the payload data is equivalent to the second record.

4. The method of claim 1 wherein a received communication comprises an identifier of the first participant computing device and the payload data.

5. The method of claim 1 , wherein a received communication represents a state of the first participant computing device and comprises metadata and payload data.

6. The method of claim 1 , wherein the storing step 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 computing device.

7. The method of claim 6 , wherein the transmitting to the second participant computing device step comprises transmitting the array to the second participant computing device.

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

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

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

11. The method of claim 1 , wherein, during the given time period, the payload data is equivalent to the first record more often than the payload data is equivalent to the second record due to the second participant computing device communicating via a connection which permits the second participant computing device to receive more data from the server during the given time period than the third participant computing device.

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 Oct 15, 2014
From: CITRIX ONLINE, LLC
To: CITRIX SYSTEMS, INC.
Reel/Frame 033950/0640 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 19, 2012
From: ALEXANDROV, ALBERT; SAAVEDRA, RAFAEL; CHALMERS, RBERT; SRINIVASAN, KAVITHA
To: CITRIX ONLINE LLC
Reel/Frame 028404/0027 →