# US 7,610,587 B2 · System and method for creating a best-match object at run time

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 7,610,587 B2
- Document ID: US7610587B2
- Status: Granted
- Kind: B2
- Application number: 10/702,151
- Filed: 2003-11-05
- Published: 2005-05-05
- Granted: 2009-10-27
- Earliest claimed: 2003-11-05
- Assignees: Hewlett-Packard Development Company, L.P.
- Inventors: John L. Manuel; Timothy McAllister
- Web page: https://patentgrep.com/patent/US7610587B2

## CPC

- G06Q 10/063: Operations research, analysis or management
- G06F 9/4411: {Configuring for operating with peripheral devices; Loading of device drivers}
- G06F 9/4488: {Object-oriented}
- G06Q: INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

An object generator includes an object factory and a pool of object proxies. The object factory forwards indicia of a desired object responsive to a system need. The object factory polls a plurality of object proxies for a respective confidence level responsive to the indicia and the object proxy's capability for producing the desired object.

## Claims

### Claim 1

A method for creating a best-match object at run time, comprising the steps of:
receiving a request for an object;
polling object proxies for a confidence level representing the capability of each respective proxy to generate the requested object;
selecting one of the proxies based on the polled confidence level; and
directing the selected proxy to create the object,
wherein the step of selecting one of the proxies comprises comparing and determining which of a first confidence level associated with a first object proxy and a second confidence level associated with a second object proxy is more likely to produce an object most responsive to a system need,
wherein when a maximum confidence level is recognized, directing the object proxy associated with the maximum confidence level to create the object, and
wherein when a maximum confidence level is failed to be recognized, directing the object proxy associated with a greatest confidence level to create the object.

### Claim 2 (depends on 1)

The method of claim 1, wherein the step of receiving a request for an object comprises receiving indicia of a peripheral device.

### Claim 3 (depends on 2)

The method of claim 2, wherein indicia comprises a device identifier.

### Claim 4 (depends on 1)

The method of claim 1, wherein the step of selecting one of the proxies comprises comparing each confidence level with a previously received confidence level.

### Claim 5 (depends on 1)

The method of claim 1, wherein the step of selecting one of the proxies comprises storing an index associated with a proxy having a greater confidence level.

### Claim 6 (depends on 1)

The method of claim 1, wherein the step of directing the select one of the proxies to create the object generates a peripheral device driver.

### Claim 7 (depends on 1)

The method of claim 1, further comprising the step of:
registering a new proxy capable of creating an object designated for use with a new peripheral device.

### Claim 8

A system, comprising an object generator and a processor operable to execute the object generator, the object generator including instructions that when executed by the processor function as:
means for receiving indicia of an object to be created;
means for identifying a select one of a plurality of object proxies responsive to a respective confidence level associated with each object proxy; and
means for directing the selected object proxy to create the object,
wherein the means for identifying a select one of a plurality of object proxies comprises means for comparing and determining which of a first confidence level associated with a first object proxy and a second confidence level associated with a second object proxy is more likely to produce an object most responsive to a system need,
wherein when a maximum confidence level is recognized, means for directing the object proxy associated with the maximum confidence level to create the object, and
wherein when a maximum confidence level is failed to be recognized, means for directing the object proxy associated with a greatest confidence level to create the object.

### Claim 9 (depends on 8)

The system of claim 8, wherein the means for receiving is responsive to a user interface.

### Claim 10 (depends on 8)

The system of claim 8, wherein the means for receiving is responsive to a communication from a device associated with the object.

### Claim 11 (depends on 8)

The system of claim 8, wherein the means for identifying a select one of a plurality of object proxies comprises means for comparing each respective confidence level with a previously received confidence level.

### Claim 12 (depends on 8)

The system of claim 8, wherein the means for identifying a select one of a plurality of object proxies comprises means for comparing each confidence level with a maximum confidence level.

### Claim 13 (depends on 12)

The system of claim 12, wherein the means for identifying a select one of a plurality of object proxies identifies an object proxy that returns the maximum confidence level as the selected object proxy.

### Claim 14

A system, comprising an object generator and a processor operable to execute the object generator, the object generator including instructions that when executed by the processor function as:
an object factory configured to poll object proxies capable of producing respective objects responsive to system needs; and
a pool including the object proxies for producing the object, the pool configured to receive indicia of the object from the object factory and each of the plurality of object proxies configured to return a respective confidence level responsive to the indicia,
wherein the object factory comprises a comparator configured to determine which of a first confidence level associated with a first object proxy and a second confidence level associated with a second object proxy is more likely to produce an object most responsive to the system need,
wherein when the comparator recognizes a maximum confidence level, the object factory is configured to direct the object proxy associated with the maximum confidence level to create an object, and
wherein when the comparator fails to recognize a maximum confidence level, the object factory is configured to direct the object proxy associated with a greatest confidence level to create an object.

### Claim 15 (depends on 14)

The system of claim 14, further comprising:
an interface associated with the object factory, the interface configured to receive a request for the object.

### Claim 16 (depends on 15)

The system of claim 15, wherein the interface is configured to communicate with a user interface.

### Claim 17 (depends on 15)

The system of claim 15, wherein the interface is configured to communicate with a device that will interact with the object.

### Claim 18 (depends on 15)

The system of claim 15, wherein the interface is configured to receive a device identifier.

### Claim 19 (depends on 15)

The system of claim 15, wherein the interface is configured to receive a device identifier associated with a printer.

### Claim 20 (depends on 14)

The system of claim 14, further comprising:
an object store configured to receive an object generated by an object proxy.

### Claim 21

A system, comprising an object generator and a processor operable to execute the object generator, the object generator including instructions that when executed by the processor function as:
an object factory configured to receive a device identifier;
a pool having an interface configured to communicate with the object factory, the pool containing object proxies capable of producing respective objects; and
an object store coupled to the pool and configured to receive and retain objects generated by selected object proxies;
wherein the object factory is configured to poll a plurality of object proxies for a confidence level representing the capability of the respective object proxy to generate an object suited for operating with a device responsive to the device identifier,
wherein the object factory comprises a comparator configured to determine which of a first confidence level associated with a first object proxy and a second confidence level associated with a second object proxy is more likely to produce an object most responsive to the system need,
wherein when the comparator recognizes a maximum confidence level, the object factory is configured to direct the object proxy associated with the maximum confidence level to create the object, and
wherein when the comparator fails to recognize a maximum confidence level, the object factory is configured to direct the object proxy associated with a greatest confidence level to create the object.

### Claim 22

A method for creating a best-match object at run time comprising the steps of:
loading a set of object proxies;
receiving indicia of a desired object for communicating with a peripheral device;
directing each of the object proxies to forward a confidence level representing the capability of each respective proxy to generate the desired object responsive to the indicia;
receiving a confidence level associated with an object proxy;
comparing the confidence level to a maximum confidence level, when the confidence level matches the maximum confidence level, directing the associated object proxy to generate an object, otherwise, recording the confidence level; and
determining if the confidence level exceeds the confidence level associated with a previously recorded confidence level, when the confidence level exceeds a previously recorded confidence level, recording an object proxy identifier, otherwise, determining if there are additional object proxies in the set, when there are additional object proxies, repeating the receiving a confidence level, comparing, and determining if the confidence level exceeds steps, otherwise, using the object proxy identifier to direct the associated object proxy to generate an object.

### Claim 23

A computer-readable medium storing instructions executable by a processor, the instructions comprising:
logic configured to load a set of object proxies, each object proxy configured to generate a respective object;
logic configured to receive indicia of a desired object for communicating with a peripheral device;
logic configured to direct each of the object proxies to forward a confidence level representing the capability of each respective proxy to generate the desired object;
logic configured to receive the confidence level from respective object proxies;
logic configured to compare the confidence level to a maximum confidence level, when the confidence level matches the maximum confidence level, the associated object proxy is directed to generate an object, otherwise, the logic records the confidence level; and determines if the confidence level exceeds the confidence level associated with a previously recorded confidence level, when the confidence level exceeds a previously recorded confidence level, the logic records an object proxy identifier, otherwise, the logic determines if there are additional object proxies in the set, when there are additional object proxies, the logic receives a confidence level associated with an object proxy that has not reported a confidence level, and repeats the maximum confidence level and previously recorded confidence level comparisons, otherwise, the logic uses the object proxy identifier to direct the associated object proxy to generate an object.

### Claim 24

A method for creating a best-match printer driver, comprising the steps of:
receiving a request to use a printer;
polling printer driver proxies for a confidence level representing the capability of each respective printer driver proxy to generate a driver that when applied to data and forwarded to the printer will produce a useful representation of the data;
selecting one of the printer driver proxies based on the polled confidence level; and
directing the selected printer driver proxy to generate the driver,
wherein the step of selecting one of the printer driver proxies comprises:
comparing the confidence level to a maximum confidence level, wherein when the confidence level matches the maximum confidence level, directing the associated printer driver proxy to generate the driver, otherwise, recording the confidence level; and
determining if the confidence level exceeds the confidence level associated with a previously recorded confidence level, wherein when the confidence level exceeds the previously recorded confidence level, recording an identifier of the printer driver proxy, otherwise, determining if there are additional printer driver proxies, wherein when there are additional printer driver proxies, repeating the polling, comparing, and determining steps, otherwise, using the identifier to direct the associated printer driver proxy to generate the driver.

### Claim 25 (depends on 24)

The method of claim 24, wherein the step of receiving a request to use a printer comprises receiving a device identifier.

### Claim 26 (depends on 24)

The method of claim 24, wherein the step of receiving a request to use a printer comprises receiving indicia of a printer capability.

### Claim 27 (depends on 24)

The method of claim 24, wherein the step of selecting one of the printer driver proxies comprises comparing each confidence level with a previously received confidence level.

### Claim 28 (depends on 24)

The method of claim 24, wherein the step of selecting one of the printer driver proxies comprises storing an index associated with a printer driver proxy having a greater confidence level.

### Claim 29

A computer-readable medium storing instructions executable by a processor, the instructions comprising:
logic configured to receive a request to use a printer;
logic configured to poll printer driver proxies for a confidence level representing the capability of each respective printer driver proxy to generate a driver that when applied to data and forwarded to the printer will produce a useful representation of the data;
logic configured to select one of the printer driver proxies based on the polled confidence level; and
logic configured to direct the selected printer driver proxy to generate the driver,
wherein the logic configured to select one of the printer driver proxies is configured to:
compare the confidence level to a maximum confidence level, wherein when the confidence level matches the maximum confidence level, direct the associated printer driver proxy to generate the driver, otherwise, record the confidence level; and
determine if the confidence level exceeds the confidence level associated with a previously recorded confidence level, wherein when the confidence level exceeds the previously recorded confidence level, record an identifier of the printer driver proxy, otherwise, determine if there are additional printer driver proxies, wherein when there are additional printer driver proxies, repeat the polling, comparing, and determining, otherwise, use the identifier to direct the associated printer driver proxy to generate the driver.

### Claim 30 (depends on 29)

The computer-readable medium of claim 29, wherein the logic configured to receive a request to use a printer is configured to receive a device identifier.

### Claim 31 (depends on 29)

The computer-readable medium of claim 29, wherein the logic configured to receive a request to use a printer is configured to receive indicia of a printer capability.

### Claim 32 (depends on 29)

The computer-readable medium of claim 29, wherein the logic configured to select one of the printer driver proxies is configured to compare confidence levels with a previously received confidence level.

### Claim 33 (depends on 29)

The computer-readable medium of claim 29, wherein the logic configured to select one of the printer driver proxies is configured to store an index associated with a printer driver proxy having a greater confidence level.
