IP Library Granted Patent US 7,840,672
Granted Patent B2
US 7,840,672 · App. 12/252,206 · Granted Nov 23, 2010

Adaptively processing client requests to a network server

Assignee: International Business Machines Corporation
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 7,840,672
App. No.
12/252,206
Granted
Nov 23, 2010
Kind
B2
Abstract

In a computer network environment, a server protocol is provided to process read requests from clients. Rather than all read requests being processed synchronously or all read requests being processed asynchronously, an attempt is first made to perform a synchronous read. If the synchronous read is unsuccessful, the connection through which the request was received by the server is registered with a monitoring service. When the data is ready to be read, an appropriate callback is called and the data transmitted. An optional delay may be imposed before the synchronous read is attempted to increase the likelihood that the attempt will be successful. A series of delays/read attempts may also be employed in order to increase the likelihood still further that an attempt will be successful.

Claims (23)

1. A non-transitory computer program product of a computer readable medium usable with a programmable computer, the computer program product having computer-readable code embodied therein for processing requests in a network environment, the computer-readable code comprising instructions for:

attempting a first synchronous read on a first thread on which a first request for data is received from a network connection;

calling a callback on the first thread if the first synchronous read succeeds;

registering the connection with a monitoring service if the first synchronous read fails;

monitoring the registered connection; and

calling a callback on a second thread when the data is ready to be read.

2. The non-transitory program product of claim 1 , further comprising instructions for attempting the first synchronous read following a delay of a first predetermined period.

3. The non-transitory program product of claim 2 , further comprising instructions for, if the attempt to perform the first synchronous read is unsuccessful, repeatedly attempting the first synchronous read, with each attempt following a delay of the first predetermined period.

4. The non-transitory program product of claim 3 , further comprising instructions for, if one of the repeated attempts to perform the first synchronous read is successful:

recording the total delay required to perform the first synchronous read of the data;

setting a second predetermined period to equal the total delay;

following a receipt of a second request for data from the network connection and a delay of the second period, attempting a second synchronous read on a second thread; and if the attempt to perform the second synchronous read is unsuccessful, attempting the second synchronous read following a delay of the first predetermined period.

5. The non-transitory program product of claim 3 , further comprising instructions for, if none of the repeated attempts to perform the first synchronous read is successful:

upon receipt of a second request for data from the network connection, registering the connection with the monitoring service without attempting to perform a synchronous read of the data;

monitoring the registered connection; and

calling a callback on a second thread when the data is ready to be read.

6. The non-transitory program product of claim 1 , further comprising instructions for:

incrementing a counter before calling the callback on the second thread;

unwinding a stack and resetting the counter if the counter reaches a predetermined value; and

calling the callback.

7. The program product of claim 1 , further comprising instruction for:

incrementing a counter before calling the callback on the second thread; and if the counter reaches a predetermined value:

registering the connection with the monitoring service; unwinding a stack and resetting the counter; monitoring the registered connection; and calling a callback when the data is ready to be read.

Assignments (2)
CHANGE OF NAME Recorded Nov 7, 2023
From: CITRIX SYSTEMS INTERNATIONAL GMBH
To: CLOUD SOFTWARE GROUP SWITZERLAND GMBH
Reel/Frame 065478/0561 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 10, 2013
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: CITRIX SYSTEMS INTERNATIONAL GMBH
Reel/Frame 029601/0753 →
Continuity (2)
Continuation 1096338600 · Oct 12, 2004
Related Publication 20090049169A1 · Feb 19, 2009