IP Library Granted Patent US 10,798,020
Granted Patent B2
US 10,798,020 · App. 15/825,870 · Granted Oct 6, 2020

Data sharing events

Inventors: Thomas M. Kludy (Cooper City, FL); Alejandro Carrasquilla (Deerfield Beach, FL); Michael Paul Wehniainen (Margate, FL); Ayush Jain (North Lauderdale, FL)
Assignee: Citrix Systems, Inc.
H04L47/82G06F9/547G06F16/25G06F16/27H04L12/2836H04L43/08H04L12/28H04L67/141
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,798,020
App. No.
15/825,870
Granted
Oct 6, 2020
Kind
B2
Abstract

Methods and systems for sharing data among multiple services are described herein. Multiple services may access data from a shared data source. The services may subscribe to data sharing events. A data sharing service may iterate through the shared data source and transmit data retrieved from the shared data source in data sharing events. When the data sharing service reaches the end of the shared data source, the data sharing service may begin iterating through the shared data source again from the beginning. The data sharing events may be transmitted at a predetermined frequency. The services may subscribe to or unsubscribe from the data sharing events.

Claims (38)

1. A method comprising:

determining a plurality of services subscribed to data sharing events;

determining a data polling rate corresponding to a data source;

determining a data transmission rate corresponding to the data sharing events;

retrieving, by iterating through the data source at the data polling rate, data from the data source; and

transmitting, based on the data transmission rate and to each service of the plurality of services, the data sharing events comprising the data from the data source.

2. The method of claim 1 , wherein each of the data sharing events comprises one row of data from the data source.

3. The method of claim 1 , wherein each of the data sharing events comprises one or more user identifiers.

4. The method of claim 1 , wherein the data polling rate indicates a maximum number of requests over a period of time.

5. The method of claim 1 , wherein the data transmission rate indicates a maximum number of data sharing events to be transmitted over a period of time.

6. The method of claim 1 , wherein iterating through the data source comprises, when an end of the data source has been reached, restarting the iterating at a beginning of the data source.

7. The method of claim 1 , wherein determining the plurality of services comprises receiving a list of addresses corresponding to the plurality of services.

8. An apparatus comprising:

one or more processors, and

memory storing instructions that, when executed by the one or more processors, cause the apparatus to:

determine a plurality of services subscribed to data sharing events;

determine a data polling rate corresponding to a data source;

determine a data transmission rate corresponding to the data sharing events;

retrieving, by iterating through the data source at the data polling rate, data from the data source; and

transmit, based on the data transmission rate and to each service of the plurality of services, the data sharing events comprising the data from the data source.

9. The apparatus of claim 8 , wherein the instructions, when executed by the one or more processors, cause the apparatus to adjust, based on a size of the data source, the data polling rate and the data transmission rate.

10. The apparatus of claim 8 , wherein the instructions, when executed by the one or more processors, cause the apparatus to, upon reaching an end of the data source, resume iterating through the data source from a beginning of the data source.

11. The apparatus of claim 8 , wherein the instructions, when executed by the one or more processors, cause the apparatus to receive, from a service, a request to subscribe to the data sharing events.

12. The apparatus of claim 8 , wherein each of the data sharing events comprises one or more rows of data from the data source.

13. The apparatus of claim 8 , wherein the data source comprises a shared data source accessed by each service of the plurality of services.

14. The apparatus of claim 8 , wherein the instructions, when executed by the one or more processors, cause the apparatus to query the data source for the data.

15. One or more non-transitory computer readable media storing computer executable instructions that, when executed by a data processing system, configure the system to perform:

determining a plurality of services subscribed to data sharing events;

determining a data polling rate corresponding to a data source;

determining a data transmission rate corresponding to the data sharing events;

retrieving, by iterating through the data source at the data polling rate, data from the data source; and

transmitting, based on the data transmission rate and to each service of the plurality of services, the data sharing events comprising the data from the data source.

16. The computer readable media of claim 15 , wherein each of the data sharing events comprises one row of data from the data source.

17. The computer readable media of claim 15 , wherein each of the data sharing events comprises one or more user identifiers.

18. The computer readable media of claim 15 , wherein the data polling rate indicates a maximum number of requests over a period of time.

19. The computer readable media of claim 15 , wherein the data transmission rate indicates a maximum number of data sharing events to be transmitted over a period of time.

20. The computer readable media of claim 15 , wherein iterating through the data source comprises, when an end of the data source has been reached, restarting the iterating at a beginning of the data source.

21. The computer readable media of claim 15 , wherein determining the plurality of services comprises receiving a list of addresses corresponding to the plurality of services.

Assignments (9)
PATENT SECURITY AGREEMENT Recorded Aug 15, 2025
From: CLOUD SOFTWARE GROUP, INC.; CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 072488/0172 →
SECURITY INTEREST Recorded May 24, 2024
From: CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.); CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 067662/0568 →
RELEASE AND REASSIGNMENT OF SECURITY INTEREST IN PATENT (REEL/FRAME 062113/0001) Recorded Apr 14, 2023
From: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
To: CITRIX SYSTEMS, INC.; CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.)
Reel/Frame 063339/0525 →
PATENT SECURITY AGREEMENT Recorded Apr 14, 2023
From: CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.); CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 063340/0164 →
PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 062113/0470 →
PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 062112/0262 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
Reel/Frame 062113/0001 →
SECURITY INTEREST Recorded Sep 30, 2022
From: CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION
Reel/Frame 062079/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 22, 2018
From: KLUDY, THOMAS M.; CARRASQUILLA, ALEJANDRO; WEHNIAINEN, MICHAEL PAUL; JAIN, AYUSH
To: CITRIX SYSTEMS, INC.
Reel/Frame 045311/0363 →
Continuity (1)
Related Publication 20190166068A1 · May 30, 2019