IP Library › Granted Patent US 11,349,904
Granted Patent B2
US 11,349,904 · App. 16/374,303 · Granted May 31, 2022

Selecting a mode of delivery to provide access to a file systems and methods

Inventors: Anuj Magazine (Bengaluru, IN); Praveen Raja Dhanabalan (Bengaluru, IN); Anudeep Athlur (Bengaluru, IN)
Assignee: Citrix Systems, Inc.
H04L67/06H04L65/4069H04L67/327
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 11,349,904
App. No.
16/374,303
Filed
Apr 3, 2019
Granted
May 31, 2022
Kind
B2
Art Unit
2446
USPC
709/203
Abstract

Described embodiments provide systems and methods for selecting between modes for delivering or providing access to a file. A server can be configured to deliver the file via a plurality of modes of delivery including. A first mode of delivery can include downloading the file and a second mode of delivery can include delivering the file via a virtualized stream. The server can receive a request and initiate downloading of the file for a length of time. The server can identify an amount of available bandwidth and size of the file and determine a first time for the first mode of delivery. The first time can be compared to a second time to deliver the file via the second mode of delivery. The server can select between the first mode of delivery and the second mode of delivery and provide the file via the selected mode of delivery.

Claims (61)

1. A method comprising:

receiving, by a server, a request to download a file, the server configured to deliver the file to a client device via a plurality of modes of delivery;

determining, by the server, a first mode of delivery and a second mode of delivery in which to transfer the file using a channel between the server and the client device, the first mode of delivery including download of the file onto the client device and the second mode of delivery including virtualization of the file by streaming the file between the server and the client device;

initiating, by the server, a first download of a portion of the file for a length of time less than a total time to download the file to enable determination of a size of the file and an amount of available bandwidth of the channel;

selecting, by the server using the size of the file and the amount of available bandwidth, one of the first mode of delivery or the second mode of delivery; and

providing, by the server responsive to the request, the file via one of the selected first mode of delivery or selected second mode of delivery, wherein one of the selected first mode of delivery or selected second mode of delivery provides access to the file for the client device in a first time period that is less than a second time period for the other of the selected first mode of delivery or selected second mode of delivery.

2. The method of claim 1 , further comprising:

determining, by the server from the first download of the portion of the file for the length of time, the total time to download the file for a full download of the file to the client device.

3. The method of claim 1 , further comprising determining, by the server, a time to deliver the file via the second mode or delivery using a virtual stream, the time to deliver the file via the second mode of delivery based on a bandwidth requirement for the virtual stream between the client device and the server and through the channel.

4. The method of claim 1 , further comprising:

initiating, by the server responsive to the selection, a second download of the file to the client device, the second download corresponding to a full download of the file to the client device; and

providing, by the server and in parallel with the second download of the file, the file to the client device using the second mode of delivery via a virtual stream established between the server and the client device.

5. The method of claim 1 , further comprising:

initiating, by the server, the second mode of delivery of the plurality of modes of delivery to deliver the file to the client device via a virtual stream between the client device and the server and through the channel for a second length of time; and

determining, by the server, the amount of available bandwidth responsive to the initiating the virtual stream to the client device based on a second portion of the file provided to the client device during the second length of time.

6. The method of claim 5 , further comprising:

downloading, by the server and based on the amount of available bandwidth, the file to the client device using the first mode of delivery through a second download of the file to the client device, the second download corresponding to a full download of the file to the client device.

7. The method of claim 1 , further comprising:

monitoring, by the server, a bandwidth value allocated for the second mode of delivery via a virtual stream between the server and the client device;

comparing, by the server, the bandwidth value allocated for the second mode of delivery via the virtual stream to a bandwidth threshold; and

modifying, by the server and responsive to the comparison, the bandwidth value allocated for the second mode of delivery via the virtual stream.

8. The method of claim 7 , further comprising:

increasing, by the server and responsive to the comparison, the bandwidth value allocated for the second mode of delivery via the virtual stream.

9. The method of claim 7 , further comprising:

decreasing, by the server and responsive to the comparison, the bandwidth value allocated for the second mode of delivery via the virtual stream.

10. The method of claim 1 , wherein the first mode of delivery includes at least one of: full download of the file or partial download of the file.

11. A system for selecting between modes for delivering a file, the system comprising:

a server comprising one or more processors, coupled to memory, and the server configured to:

receive a request to download a file, the server configured to deliver the file to a client device via a plurality of modes of delivery;

determine a first mode of delivery and a second mode of delivery in which to transfer the file using a channel between the server and the client device, the first mode of delivery including download of the file onto the client device and the second mode of delivery including virtualization of the file by streaming the file between the server and the client device;

initiate a first download of a portion of the file for a length of time less than a total time to download the file to enable determination of a size of the file and an amount of available bandwidth of the channel;

select, using the size of the file and the amount of available bandwidth, one of the first mode of delivery or the second mode of delivery; and

provide, responsive to the request, the file via one of the selected first mode of delivery or selected second mode of delivery, wherein one of the selected first mode of delivery or selected second mode of delivery provides access to the file for the client device in a first time period that is less than a second time period for the other of the selected first mode of delivery or selected second mode of delivery.

12. The system of claim 11 , wherein the server is further configured to:

determine, from the first download of the portion of the file for the length of time, the total time to download the file for a full download of the file to the client device.

13. The system of claim 11 , wherein the server is further configured to:

determine a time to deliver the file via the second mode of delivery using a virtual stream, the time to deliver the file via the second mode of delivery based on a bandwidth requirement for the virtual stream between the client device and the server and through the channel.

14. The system of claim 11 , wherein the server is further configured to:

initiate, responsive to the selection, a second download of the file to the client device, the second download corresponding to a full download of the file to the client device; and

provide, in parallel with the second download of the file, the file to the client device using the second mode of delivery via a virtual stream established between the server and the client device.

15. The system of claim 11 , wherein the server is further configured to:

initiate the second mode of delivery of the plurality of modes of delivery to deliver the file to the client device via a virtual stream between the client device and the server and through the channel for a second length of time; and

determine the amount of available bandwidth responsive to the initiating the virtual stream to the client device based on a portion of the file provided to the client device during the second length of time.

16. The system of claim 15 , wherein the server is further configured to:

download, based on the amount of available bandwidth, the file to the client device using the first mode of delivery through a second download of the file to the client device, the second download corresponding to a full download of the file to the client device.

17. The system of claim 11 , wherein the server is further configured to:

monitor a bandwidth value allocated for the second mode of delivery via a virtual stream between the server and the client device;

compare the bandwidth value allocated for the second mode of delivery via the virtual stream to a bandwidth threshold; and

modify, responsive to the comparison, a size of the bandwidth value allocated for the second mode of delivery via the virtual stream.

18. A non-transitory computer-readable medium, comprising instructions that, when executed by one or more processors, cause the one or more processors to:

receive a request to download a file, a server configured to deliver the file to a client device via a plurality of modes of delivery;

determine a first mode of delivery and a second mode of delivery in which to transfer the file using a channel between the server and the client device, the first mode of delivery including download of the file onto the client device and the second mode of delivery including virtualization of the file by streaming the file between the server and the client device;

initiate a first download of a portion of the file for a length of time less than a total time to download the file to enable determination of a size of the file and an amount of available bandwidth of the channel;

select, using the size of the file and the amount of available bandwidth, one of the first mode of delivery or the second mode of delivery; and

provide, responsive to the request, the file via one of the selected first mode of delivery or selected second mode of delivery, wherein one of the selected first mode of delivery or selected second mode of delivery provides access to the file for the client device in a first time period that is less than a second time period for the other of the selected first mode of delivery or selected second mode of delivery.

19. The non-transitory computer-readable medium of claim 18 , further comprising instructions that cause the one or more processors to:

determine, from the first download of the portion of the file for the length of time, the total time to download the file for a full download of the file to the client device.

20. The non-transitory computer-readable medium of claim 18 , further comprising instructions that cause the one or more processors to:

monitor a bandwidth value allocated for the second mode of delivery via a virtual stream between the server and the client device;

compare the bandwidth value allocated for the second mode of delivery via the virtual stream to a bandwidth threshold; and

modify, responsive to the comparison, a size of the bandwidth value allocated for the second mode of delivery via the virtual stream.

Assignments (16)
SECURITY INTEREST Recorded Jul 21, 2025
From: PROGRESS SOFTWARE CORPORATION
To: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 072094/0790 →
SECURITY INTEREST Recorded Dec 26, 2024
From: PROGRESS SOFTWARE CORPORATION
To: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 069784/0578 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 12, 2024
From: CITRIX SYSTEMS, INC.
To: PROGRESS SOFTWARE CORPORATION
Reel/Frame 069618/0836 →
RELEASE OF CERTAIN PATENT SECURITY INTERESTS AT REEL/FRAME 067662/0568 Recorded Nov 2, 2024
From: WILMINGTON TRUST, NATIONAL ASSOCIATION
To: CITRIX SYSTEMS, INC.; CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.)
Reel/Frame 069291/0525 →
RELEASE OF CERTAIN PATENT SECURITY INTERESTS AT REEL/FRAME 062079/0001 Recorded Nov 2, 2024
From: WILMINGTON TRUST, NATIONAL ASSOCIATION
To: CITRIX SYSTEMS, INC.
Reel/Frame 069291/0536 →
RELEASE OF CERTAIN PATENT SECURITY INTERESTS AT REEL/FRAME 062112/0262 Recorded Nov 2, 2024
From: BANK OF AMERICA, N.A.
To: CITRIX SYSTEMS, INC.; CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.)
Reel/Frame 069291/0492 →
RELEASE OF CERTAIN PATENT SECURITY INTERESTS AT REEL/FRAME 063340/0164 Recorded Nov 2, 2024
From: WILMINGTON TRUST, NATIONAL ASSOCIATION
To: CITRIX SYSTEMS, INC.; CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.)
Reel/Frame 069291/0503 →
RELEASE OF CERTAIN PATENT SECURITY INTERESTS AT REEL/FRAME 062113/0470 Recorded Nov 2, 2024
From: WILMINGTON TRUST, NATIONAL ASSOCIATION
To: CITRIX SYSTEMS, INC.; CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.)
Reel/Frame 069291/0514 →
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 →
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 →
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 →
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 →
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 Apr 4, 2019
From: MAGAZINE, ANUJ; DHANABALAN, PRAVEEN RAJA; ATHLUR, ANUDEEP
To: CITRIX SYSTEMS, INC.
Reel/Frame 048792/0764 →
Continuity (1)
Related Publication 20200322415A1 · Oct 8, 2020