IP Library Granted Patent US 9,392,053
Granted Patent B2
US 9,392,053 · App. 14/186,903 · Granted Jul 12, 2016

Generic transcoding service with library attachment

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 9,392,053
App. No.
14/186,903
Granted
Jul 12, 2016
Kind
B2
Abstract

In particular embodiments, a method includes, by a computing device, receiving a connection from a client and assigning the client a unique socket. The method further includes launching a generic transcoding service attached to a runtime library, and the runtime library may be able to intercept system calls from a specific instance of an application executing on a remote client for exporting to the client. The method further includes receiving a termination of the connection by the client and updating load-balancing information.

Claims (79)

1. A method comprising, by a computing device:

receiving a connection from a hypertext markup language (HTML) client, wherein the HTML client does not include functionality for a remote desktop protocol;

receiving connection information from the HTML client describing the connection;

assigning to the HTML client a unique socket;

launching by a generic client engine a remote desktop protocol (RDP) client with a generic transcoding service attached to a runtime library, wherein the runtime library is operable to intercept system calls from a specific instance of an application executing on a remote client for exporting to the HTML client, and wherein the launching is based, at least in part, on a socket specification associated with the unique socket;

defining by the generic transcoding service one or more functional primitives for import and export which allows for application extension for the HTML client, wherein the one or more functional primitives comprises HTML syntax and a stream service;

providing an interface to the HTML client with a remote desktop protocol (RDP) server via the stream service of the generic transcoding service such that the HTML client connects to an RDP server;

reconstructing, by the stream service, one or more tasks sent to and received from the RDP server;

obtaining a credential and information associated with the connection prior to launching the generic transcoding service;

providing a remote desktop client function via the stream service, wherein the remote desktop client function comprises interpreting, processing and transcoding one or more operations;

attaching the generic transcoding service to one or more device functions of the HTML client;

creating a plurality of channels, for the connection, associated with the generic transcoding service such that a plurality of independent streams of data are transported, wherein at least one of the plurality of channels is a control channel, and wherein at least one of the plurality of channels is a main channel;

establishing bidirectional communication over the control channel between the generic client engine and the generic transcoding service using a unique reference identifier for each instance of the generic transcoding service;

using the main channel to communicate between an HTML browser of the HTML client and the generic transcoding service;

communicating transcoded data via the main channel between the RDP server and the HTML browser of the client, wherein RDP server export and import of data occurs through the generic transcoding service;

managing communications of the RDP client via the generic transcoding service;

receiving a termination of the connection by the HTML client;

updating load-balancing information; and

selecting a host based, at least in part, on the load-balancing information.

2. The method of claim 1 , wherein receiving a connection from the HTML client comprises receiving connection information from the HTML client comprising credentials.

3. The method of claim 2 , wherein the connection information is input by a user via a dialog menu.

4. The method of claim 1 , wherein the HTML client is an HTTP-compatible thin client comprising a browser.

5. The method of claim 1 , wherein the RDP client is a transcoding remote desktop client, wherein when the RDP client is launched a transcoding operation begins.

6. The method of claim 1 , further comprising:

receiving, from the runtime library, one or more environmental variables via a control channel.

7. The method of claim 6 , wherein the one or more environmental variables are utilized to validate operation for a reference identifier.

8. A system comprising:

one or more processors; and

a memory coupled to the processors comprising instructions executable by the processors, the processors being operable when executing the instructions to:

receive a connection from a hypertext markup language (HTML) client, wherein the HTML client does not include functionality for a remote desktop protocol;

receiving connection information from the HTML client describing the connection;

assign to the HTML client a unique socket;

launch by a generic client engine a remote desktop protocol (RDP) client with a generic transcoding service attached to a runtime library, wherein the runtime library is operable to intercept system calls from a specific instance of an application executing on a remote client for exporting to the HTML client, and wherein the launch is based, at least in part, on a socket specification associated with the unique socket;

define by the generic transcoding service one or more functional primitives for import and export which allows for application extension for the HTML client, wherein the one or more functional primitives comprises HTML syntax and a stream service;

provide an interface to the HTML client with a remote desktop protocol (RDP) server via the stream service of the generic transcoding service such that the HTML client connects to an RDP server;

reconstructing, by the stream service, one or more tasks sent to and received from the RDP server;

obtain a credential and information associated with the connection prior to launching the generic transcoding service;

provide a remote desktop client function via the stream service, wherein the remote desktop client function comprises interpreting, processing and transcoding one or more operations;

attach the generic transcoding service to one or more device functions of the HTML client;

creating a plurality of channels, for the connection, associated with the generic transcoding service such that a plurality of independent streams of data are transported, wherein at least one of the plurality of channels is a control channel, and wherein at least one of the plurality of channels is a main channel;

establishing bidirectional communication over the control channel between the generic client engine and the generic transcoding service using a unique reference identifier for each instance of the generic transcoding service;

using the main channel to communicate between an HTML browser of the HTML client and the generic transcoding service;

communicating transcoded data via the main channel between the RDP server and the HTML browser of the client, wherein RDP server export and import of data occurs through the generic transcoding service;

managing communications of the RDP client via the generic transcoding service;

receive a termination of the connection by the HTML client;

update load-balancing information; and

select a host based, at least in part, on the load-balancing information.

9. The system of claim 8 , wherein receiving a connection from the HTML client comprises receiving connection information from the HTML client comprising credentials.

10. The system of claim 9 , wherein the connection information is input by a user via a dialog menu.

11. The system of claim 8 , wherein the HTML client is an HTTP-compatible thin client comprising a browser.

12. The system of claim 8 , wherein the RDP client is a transcoding remote desktop client, wherein when the RDP client is launched a transcoding operation begins.

13. The system of claim 8 , the processors being further operable when executing the instructions to:

receive, from the runtime library, one or more environmental variables via a control channel.

14. The system of claim 13 , wherein the one or more environmental variables are utilized to validate operation for a reference identifier.

15. One or more computer-readable non-transitory storage media embodying software that is operable when executed to:

receive a connection from a hypertext markup language (HTML) client, wherein the HTML client does not include functionality for a remote desktop protocol;

receiving connection information from the HTML client describing the connection;

assign to the HTML client a unique socket;

launch by a generic client engine a remote desktop protocol (RDP) client with a generic transcoding service attached to a runtime library, wherein the runtime library is operable to intercept system calls from a specific instance of an application executing on a remote client for exporting to the HTML client and wherein the launch is based, at least in part, on a socket specification associated with the unique socket;

define by the generic transcoding service one or more functional primitives for import and export which allows for application extension for the HTML client, wherein the one or more functional primitives comprises HTML syntax and a stream service;

provide an interface to the HTML client with a remote desktop protocol (RDP) server via the stream service of the generic transcoding service such that the HTML client connects to an RDP server;

reconstructing, by the stream service, one or more tasks sent to and received from the RDP server;

obtain a credential and information associated with the connection prior to launching the generic transcoding service;

provide a remote desktop client function via the stream service, wherein the remote desktop client function comprises interpreting, processing and transcoding one or more operations;

attach the generic transcoding service to one or more device functions of the HTML client;

creating a plurality of channels, for the connection, associated with the generic transcoding service such that a plurality of independent streams of data are transported, wherein at least one of the plurality of channels is a control channel, and wherein at least one of the plurality of channels is a main channel;

establishing bidirectional communication over the control channel between the generic client engine and the generic transcoding service using a unique reference identifier for each instance of the generic transcoding service;

using the main channel to communicate between an HTML browser of the HTML client and the generic transcoding service;

communicating transcoded data via the main channel between the RDP server and the HTML browser of the client, wherein RDP server export and import of data occurs through the generic transcoding service;

managing communications of the RDP client via the generic transcoding service;

receive a termination of the connection by the HTML client;

update load-balancing information; and

select a host based, at least in part, on the load-balancing information.

16. The media of claim 15 , wherein receiving a connection from the HTML client comprises receiving connection information from the HTML client comprising credentials.

17. The media of claim 16 , wherein the connection information is input by a user via a dialog menu.

18. The media of claim 15 , wherein the HTML client is an HTTP-compatible thin client comprising a browser.

19. The media of claim 15 , wherein the RDP client is a transcoding remote desktop client, wherein when the RDP client is launched a transcoding operation begins.

20. The media of claim 15 , the software further operable when executed to:

receive, from the runtime library, one or more environmental variables via a control channel.

Assignments (15)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053546/0001) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC IP HOLDING COMPANY LLC
Reel/Frame 071642/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (045455/0001) Recorded May 20, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO ASAP SOFTWARE EXPRESS, INC.); DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC CORPORATION (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MAGINATICS LLC); EMC IP HOLDING COMPANY LLC (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MOZY, INC.); SCALEIO LLC
Reel/Frame 061753/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (040136/0001) Recorded Apr 26, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO ASAP SOFTWARE EXPRESS, INC.); DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC CORPORATION (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MAGINATICS LLC); EMC IP HOLDING COMPANY LLC (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MOZY, INC.); SCALEIO LLC
Reel/Frame 061324/0001 →
RELEASE OF SECURITY INTEREST Recorded Nov 3, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL USA L.P.; ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL INTERNATIONAL, L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; WYSE TECHNOLOGY L.L.C.
Reel/Frame 058216/0001 →
SECURITY AGREEMENT Recorded Apr 22, 2020
From: CREDANT TECHNOLOGIES INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 053546/0001 →
SECURITY AGREEMENT Recorded Mar 21, 2019
From: CREDANT TECHNOLOGIES, INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 049452/0223 →
SECURITY AGREEMENT Recorded Sep 21, 2016
From: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; SPANNING CLOUD APPS LLC; WYSE TECHNOLOGY L.L.C.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 040134/0001 →
SECURITY AGREEMENT Recorded Sep 21, 2016
From: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; SPANNING CLOUD APPS LLC; WYSE TECHNOLOGY L.L.C.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 040136/0001 →
RELEASE OF REEL 032810 FRAME 0038 (TL) Recorded Sep 14, 2016
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: DELL SOFTWARE INC.; DELL PRODUCTS L.P.; SECUREWORKS, INC.
Reel/Frame 040027/0686 →
RELEASE OF REEL 032809 FRAME 0987 (NOTE) Recorded Sep 14, 2016
From: BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
To: DELL SOFTWARE INC.; DELL PRODUCTS L.P.; SECUREWORKS, INC.
Reel/Frame 040026/0953 →
RELEASE OF REEL 032810 FRAME 0023 (ABL) Recorded Sep 13, 2016
From: BANK OF AMERICA, N.A., AS ADMINISTRATIVE AGENT
To: DELL SOFTWARE INC.; DELL PRODUCTS L.P.; SECUREWORKS, INC.
Reel/Frame 040014/0320 →
SUPPLEMENT TO PATENT SECURITY AGREEMENT (TERM LOAN) Recorded May 1, 2014
From: DELL PRODUCTS L.P.; DELL SOFTWARE INC.; SECUREWORKS, INC.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 032810/0038 →
SUPPLEMENT TO PATENT SECURITY AGREEMENT (ABL) Recorded May 1, 2014
From: DELL PRODUCTS L.P.; DELL SOFTWARE INC.; SECUREWORKS, INC.
To: BANK OF AMERICA, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 032810/0023 →
SUPPLEMENT TO PATENT SECURITY AGREEMENT (NOTES) Recorded May 1, 2014
From: DELL PRODUCTS L.P.; DELL SOFTWARE INC.; SECUREWORKS, INC.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 032809/0987 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 21, 2014
From: FAUSAK, ANDREW T.; ROMBAKH, OLEG
To: DELL PRODUCTS L.P.
Reel/Frame 032273/0494 →