Controlling the transfer of terminal server data
First Claim
1. At a computer system, a method for managing a plurality of channel writes by applications at a terminal server system over a terminal server connection that connects the terminal server system with a client system, the method comprising:
- the terminal server system establishing a terminal server connection with the client system, including establishing, as part of the terminal server connection, at least the following channels;
a first channel between a first application executing at the terminal server system on behalf of the client system and a first plug-in at the client system; and
a second channel between a second application executing at the terminal server system on behalf of the client system and a second plug-in at the client system,wherein data transfer over the first channel and the second channel are managed, at least in part, by a server component at the terminal server system;
the server component at the terminal server system receiving first terminal server data from the first application, the first terminal server data corresponding to a first write operation sent by the first application over the first channel for writing the first terminal server data to the first plug-in;
in response to the first write operation, the server component at the terminal server system locking a write resource associated with the first channel to prevent simultaneous write operations by the first application on the first channel without locking write operations on other channels of the terminal server connection;
simultaneous to the write resource associated with the first channel being locked, the server component at the terminal server system receiving second terminal server data from the second application, the second terminal server data corresponding to a second write operation sent by the second application over the second channel for writing the second terminal server data to the second plug-in;
in response to the second write operation, the server component at the terminal server system determining that a write resource associated with the second channel is not locked; and
based at least in part on determining that the write resource associated with the second channel is not locked, the server component at the terminal server system simultaneously writing at least a portion of the first terminal server data on the first channel and at least a portion of the second terminal server data on the second channel while the write resource associated with the first channel is locked, including the server component sending the portion of the first terminal server data to the first plug-in over the first channel while simultaneously sending the portion of the second terminal server data to the second plug-in over the second channel.
2 Assignments
0 Petitions
Accused Products
Abstract
The present invention extends to methods, systems, and computer program products for controlling the transfer of terminal server data. In some embodiments, contending request to send terminal server data are resolved by a flow control module situated between a terminal server protocol and a transport/network protocol. The flow control module utilizes channel priorities along with amounts of previously sent data per channel to determine how to distribute bandwidth in a relatively controlled manner between contending channels. The flow control module can be configured to intercept communication between terminal server protocol and a transport/network protocol to facilitate bandwidth distribution. In other embodiments, data is simultaneously sent over multiple channels of terminal server connection. A first write operation obtains a lock on a corresponding channel but the channel lock does not prevent write operations on other channels.
-
Citations
19 Claims
-
1. At a computer system, a method for managing a plurality of channel writes by applications at a terminal server system over a terminal server connection that connects the terminal server system with a client system, the method comprising:
-
the terminal server system establishing a terminal server connection with the client system, including establishing, as part of the terminal server connection, at least the following channels; a first channel between a first application executing at the terminal server system on behalf of the client system and a first plug-in at the client system; and a second channel between a second application executing at the terminal server system on behalf of the client system and a second plug-in at the client system, wherein data transfer over the first channel and the second channel are managed, at least in part, by a server component at the terminal server system; the server component at the terminal server system receiving first terminal server data from the first application, the first terminal server data corresponding to a first write operation sent by the first application over the first channel for writing the first terminal server data to the first plug-in; in response to the first write operation, the server component at the terminal server system locking a write resource associated with the first channel to prevent simultaneous write operations by the first application on the first channel without locking write operations on other channels of the terminal server connection; simultaneous to the write resource associated with the first channel being locked, the server component at the terminal server system receiving second terminal server data from the second application, the second terminal server data corresponding to a second write operation sent by the second application over the second channel for writing the second terminal server data to the second plug-in; in response to the second write operation, the server component at the terminal server system determining that a write resource associated with the second channel is not locked; and based at least in part on determining that the write resource associated with the second channel is not locked, the server component at the terminal server system simultaneously writing at least a portion of the first terminal server data on the first channel and at least a portion of the second terminal server data on the second channel while the write resource associated with the first channel is locked, including the server component sending the portion of the first terminal server data to the first plug-in over the first channel while simultaneously sending the portion of the second terminal server data to the second plug-in over the second channel. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
-
-
10. A computer storage device for use at a terminal server computer system, the computer storage device having stored thereon computer-executable instructions that, when executed at a processor of the terminal server computer system, cause the terminal server computer system to perform a method for managing a plurality of channel writes by applications at the terminal server computer system over a terminal server connection that connects the terminal server computer system with a client system, including performing the following:
-
establishing a terminal server connection with the client system, including establishing, as part of the terminal server connection, at least the following channels; a first channel between a first application executing at the terminal server computer system on behalf of the client system and a first plug-in at the client system; and a second channel between a second application executing at the terminal server computer system on behalf of the client system and a second plug-in at the client system, wherein data transfer over the first channel and the second channel are managed, at least in part, by a server component at the terminal server computer system; the server component obtaining first terminal server data from the first application, the first terminal server data corresponding to a first write operation sent by the first application over the first channel for writing the first terminal server data to the first plug-in; in response to the first write operation, the server component locking a write resource associated with the first channel to prevent simultaneous write operations by the first application on the first channel without locking write operations on other channels of the terminal server connection; simultaneous to the write resource associated with the first channel being locked, the server component receiving second terminal server data from the second application, the second terminal server data corresponding to a second write operation sent by the second application over the second channel for writing the second terminal server data to the second plug-in; in response to the second write operation, the system server component determining that a write resource associated with the second channel is not locked; and based at least in part on determining that the write resource associated with the second channel is not locked, the server component simultaneously writing at least a portion of the first terminal server data on the first channel and at least a portion of the second terminal server data on the second channel while the write resource associated with the first channel is locked, including the server component sending the portion of the first terminal server data to the first plug-in over the first channel while simultaneously sending the portion of the second terminal server data to the second plug-in over the second channel. - View Dependent Claims (11, 12, 13, 14, 15, 16, 17, 18)
-
-
19. A computer system, comprising:
-
one or more processors; and a computer storage device having stored thereon executable instructions that, when executed by the one or more processors, cause the computer system to perform acts in a method, including the following; establishing a terminal server connection with a client system, including establishing, as part of the terminal server connection, at least the following channels; a first channel between a first application executing on behalf of the client system and a first plug-in at the client system; and a second channel between a second application executing on behalf of the client system and a second plug-in at the client system; instantiating a server component which manages data transfer over channels of the terminal server connection; receiving, at the server component, first terminal server data from the first application, the first terminal server data corresponding to a first write operation sent by the first application over the first channel for writing the first terminal server data to the first plug-in; in response to the first write operation, the server component locking a write resource associated with the first channel to prevent simultaneous write operations by the first application on the first channel without locking write operations on other channels of the terminal server connection; simultaneous to the write resource associated with the first channel being locked, the server component receiving second terminal server data from the second application, the second terminal server data corresponding to a second write operation sent by the second application over the second channel for writing the second terminal server data to the second plug-in; in response to the second write operation, the server component determining that a write resource associated with the second channel is not locked; and based at least in part on determining that the write resource associated with the second channel is not locked, the server component simultaneously writing at least a portion of the first terminal server data on the first channel and at least a portion of the second terminal server data on the second channel while the write resource associated with the first channel is locked, including the server component sending the portion of the first terminal server data to the first plug-in over the first channel while simultaneously sending the portion of the second terminal server data to the second plug-in over the second channel.
-
Specification