IP Library › Granted Patent US 8,190,707
Granted Patent B2
US 8,190,707 · App. 11/941,521 · Granted May 29, 2012

System and method for transferring data among computing environments

Assignee: Citrix Systems, Inc.
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,190,707
App. No.
11/941,521
Filed
Nov 16, 2007
Granted
May 29, 2012
Kind
B2
Art Unit
2491
USPC
709/218
Abstract

Systems and methods for transferring data among computing environments include a method for transferring data items among a portion of a remote computing environment and a portion of a local computing environment using a presentation layer protocol. Data items are transferred during transfer cycles and upon the release of data objects into a destination computing environment. Transfer cycles may transfer data among local and remote computing environments, among more than one remote computing environment, and may further transfer in parallel with other transfer cycles. A first transfer cycle transferring a first data item continues to transfer the first data item when a second transfer cycle initializes and transfers a second data item during a portion of the first transfer cycle. Data operations may be performed on data items during the transfer of a data item, and data items may be compressed or segmented prior to transfer.

Claims (63)

1. A method for transferring data among a portion of a local computing environment and a portion of a remote computing environment, the local computing environment communicating with the remote computing environment using a presentation layer protocol, the method comprising:

establishing a remote access session to a remote computing environment by a local computing environment using a presentation layer protocol comprising a virtual channel between the local computing environment and the remote computing environment, wherein the remote access session allows access to the remote computing environment by the local computing environment;

Retrieving a data item, represented by a selected object, the data item located in one of the local computing environment and the remote computing environment;

initiating a first transfer cycle among the computing environments upon detection of the release of the selected object at a target drop location of the selected object in the other of either of the local computing environment and the remote computing environment;

transferring during the first transfer cycle, using a drag and drop transfer method from an initial position of the data item to a local proxy location and from a remote proxy location to the target drop location of the selected object, the selected data item from the one of the local computing environment and the remote computing environment to the other of the local computing environment and the remote computing environment via the virtual channel;

retrieving a second data item, represented by a second selected object, the second data item located in one of the local computing environment and the remote computing environment;

initiating a second transfer cycle during execution of the first transfer cycle and among the computing environments, upon detection of the release of the second selected object at a target drop location of the second selected object in the other of either of the local computing environment and the remote computing environment; and

transferring during the second transfer cycle and during at least a portion of the first transfer cycle, using a drag and drop transfer method from an initial position of the second data item to a local proxy location and from a remote proxy location to the target drop location of the second selected object, the second selected data item from the one of the local computing environment and the remote computing environment, to the other of the local computing environment and the remote computing environment via the virtual channel.

2. The method of claim 1 , further comprising compressing the selected data item prior to transferring.

3. The method of claim 1 , wherein retrieving a selected data item comprises retrieving data representative of a collection of data items.

4. The method of claim 3 , further comprising converting the selected data into a list of individual data item entries, and reading each data item entry representative of an individual data item within the collection of data items.

5. The method of claim 1 , further comprising:

choosing a data operation to perform during transferring; and

applying the data operation to the selected data item upon detection of the release of the selected object.

6. The method of claim 5 , wherein choosing further comprises choosing a data operation selected from the group consisting of a copy operation, a move operation, a link operation and a cancellation operation.

7. The method of claim 1 , further comprising receiving from either of the local computing environment and the remote computing environment, feedback data indicative of data drop information, the data drop information selected from the group consisting of data drop permissions, data drop status, and data drop attributes.

8. A method for transferring data among a portion of a first remote computing environment and a portion of a second remote computing environment, the first remote computing environment communicating with the second remote computing environment using a presentation layer protocol, the method comprising:

establishing a remote access session between a first remote computing environment and a second remote computing environment using a presentation layer protocol comprising a virtual channel between the first remote computing environment and the second remote computing environment, wherein the remote access session allows access to the remote environment of one of the first remote computing environment and the second remote computing environment to the other of the first remote computing environment and the second remote computing environment;

Retrieving a data item, represented by a selected object, the data item located in one of the first remote computing environment and the second remote computing environment;

initiating a first transfer cycle among the computing environments upon detection of the release of the selected object at a target drop location of the selected object in the other of either of the first remote computing environment and the second remote computing environment;

transferring during the first transfer cycle, using a drag and drop transfer method from an initial position of the data item to a local proxy location and from a remote proxy location to the target drop location of the selected object, the selected data item from the one of the first remote computing environment and the second remote computing environment, to the other of the first remote computing environment and the second remote computing environment via the virtual channel;

retrieving a second data item, represented by a second selected object, the second data item located in one of the first remote computing environment and the second remote computing environment;

initiating a second transfer cycle during execution of the first transfer cycle and among the computing environments, upon detection of the release of the second selected object at a target drop location of the second selected object in the other of either of the first remote computing environment and the second remote computing environment; and

transferring during the second transfer cycle and during at least a portion of the first transfer cycle, using a drag and drop transfer method from an initial position of the second data item to a local proxy location and from a remote proxy location to the target drop location of the second selected object, the second selected data item from the one of the first remote computing environment and the second remote computing environment, to the other of the first remote computing environment and the second remote computing environment via the virtual channel.

9. The method of claim 8 , further comprising:

transferring during the first transfer cycle, using a drag and drop transfer method, the selected data item from the one of the first remote computing environment and the second remote computing environment to a local computing environment, and from the local computing environment to the other of the first remote computing environment and the second remote computing environment; and

transferring during the second transfer cycle and during at least a portion of the first transfer cycle, using a drag and drop transfer method, the second selected data item from the one of the first remote computing environment and the second remote computing environment to the local computing environment, and from the local computing environment to the other of the first remote computing environment and the second remote computing environment.

10. The method of claim 8 , further comprising:

choosing a data operation to perform during transferring; and

applying the data operation to the selected data item upon detection of the release of the selected object.

11. The method of claim 10 , wherein choosing further comprises choosing a data operation selected from the group consisting of a copy operation, a move operation, a link operation and a cancellation operation.

12. A system for transferring data among a portion of a local computing environment and a portion of a remote computing environment, the local computing environment communicating with the remote computing environment using a presentation layer protocol, the system comprising:

means for establishing a remote access session to a remote computing environment by a local computing environment using a presentation layer protocol comprising a virtual channel between the local computing environment and the remote computing environment, wherein the remote access session allows access to the remote computing environment by the local computing environment;

means for retrieving a data item, represented by a selected object, the data item located in one of the local computing environment and the remote computing environment;

means for initiating a first transfer cycle among the computing environments upon detection of the release of the selected object at a target drop location of the selected object in the other of either of the local computing environment and the remote computing environment;

means for transferring during the first transfer cycle, using a drag and drop transfer method from an initial position of the data item to a local proxy location and from a remote proxy location to the target drop location of the selected object, the selected data item from the one of the local computing environment and the remote computing environment to the other of the local computing environment and the remote computing environment;

means for retrieving a second data item, represented by a second selected object, the second data item located in one of the local computing environment and the remote computing environment via the virtual channel;

means for initiating a second transfer cycle during execution of the first transfer cycle and among the computing environments, upon detection of the release of the second selected object at a target drop location of the second selected object in the other of either of the local computing environment and the remote computing environment; and

means for transferring during the second transfer cycle and during at least a portion of the first transfer cycle, using a drag and drop transfer method from an initial position of the second data item to a local proxy location and from a remote proxy location to the target drop location of the second selected object, the second selected data item from the one of the local computing environment and the remote computing environment, to the other of the local computing environment and the remote computing environment via the virtual channel.

13. The system of claim 12 , further comprising a means for compressing the selected data item prior to transferring.

14. The system of claim 12 , wherein a means for retrieving a selected data item further comprises a means for retrieving data representative of a collection of data items.

15. The system of claim 14 , further comprising a means for converting the selected data into a list of individual data item entries, and reading each data item entry representative of an individual data item within the collection of data items.

16. The system of claim 12 , further comprising:

means for choosing a data operation to perform during transferring; and

means for applying the data operation to the selected data item upon detection of the release of the selected object.

17. The system of claim 16 , wherein choosing further comprises a means for choosing a data operation selected from the group consisting of a copy operation, a move operation, a link operation and a cancellation operation.

18. The system of claim 12 , further comprising a means for receiving from either of the local computing environment and the remote computing environment, feedback data indicative of data drop information, the data drop information selected from the group consisting of data drop permissions, data drop status, and data drop attributes.

19. A non-transitory computer readable medium having instructions thereon, that when executed provide a method for transferring data among a portion of a local computing environment and a portion of a remote computing environment, the local computing environment communicating with the remote computing environment using a presentation layer protocol, the non-transitory computer readable medium comprising:

instructions to establish a remote access session between a remote computing environment and a local computing environment using a presentation layer protocol comprising a virtual channel between the local computing environment and the remote computing environment, wherein the remote access session allows access to the remote computing environment by the local computing environment;

instructions to retrieve a data item, represented by a selected object, the data item located in one of the local computing environment and the remote computing environment;

instructions to initiate a first transfer cycle among the computing environments upon detection of the release of the selected object at a target drop location of the selected object in the other of either of the local computing environment and the remote computing environment;

instructions to transfer during the first transfer cycle, using a drag and drop transfer method from an initial position of the data item to a local proxy location and from a remote proxy location to the target drop location of the selected object, the selected data item from the one of the local computing environment and the remote computing environment to the other of the local computing environment and the remote computing environment via the virtual channel;

instructions to retrieve a second data item, represented by a second selected object, the second data item located in one of the local computing environment and the remote computing environment;

instructions to initiate a second transfer cycle during execution of the first transfer cycle and among the computing environments, upon detection of the release of the second selected object at a target drop location of the second selected object in the other of either of the local computing environment and the remote computing environment; and

instructions to transfer during the second transfer cycle and during at least a portion of the first transfer cycle, using a drag and drop transfer method from an initial position of the second data item to a local proxy location and from a remote proxy location to the target drop location of the second selected object, the second selected data item from the one of the local computing environment and the remote computing environment, to the other of the local computing environment and the remote computing environment via the virtual channel.

20. The computer readable medium of claim 19 , further comprising instructions to compress the selected data item prior to transferring.

21. The computer readable medium of claim 19 , wherein instructions to retrieve a selected data item comprises instructions to retrieve data representative of a collection of data items.

22. The computer readable medium of claim 21 , further comprising instructions to convert the selected data into a list of individual data item entries, and read each data item entry representative of an individual data item within the collection of data items.

23. The computer readable medium of claim 19 , further comprising:

instructions to choose a data operation to perform during transferring; and

instructions to apply the data operation to the selected data item upon detection of the release of the selected object.

24. The computer readable medium of claim 23 , wherein instructions to choose further comprises instructions to choose a data operation selected from the group consisting of a copy operation, a move operation, a link operation and a cancellation operation.

25. The computer readable medium of claim 19 , further comprising instructions to receive, from either of the local computing environment and the remote computing environment, feedback data indicative of data drop information, the data drop information selected from the group consisting of data drop permissions, data drop status, and data drop attributes.

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 →
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 →
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 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 →
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 Jan 16, 2008
From: TRIVEDI, POOJA; MOMCHILOV, GEORGY; POPE, DAVID
To: CITRIX SYSTEMS, INC.
Reel/Frame 020373/0685 →
Continuity (2)
Provisional Application 60981486 · Oct 20, 2007
Related Publication 20090030971A1 · Jan 29, 2009