# US 10,374,893 B1 · Reactive non-blocking input and output for target device communication

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

- Number: US 10,374,893 B1
- Document ID: US10374893B1
- Status: Granted
- Kind: B1
- Application number: 16/173,876
- Filed: 2018-10-29
- Granted: 2019-08-06
- Earliest claimed: 2018-10-29
- Assignees: Capital One Services, LLC
- Applicants: Capital One Services, LLC
- Inventors: Gopi Kancharla; Nicky Joshi; Fredrick Crable
- Web page: https://patentgrep.com/patent/US10374893B1

## CPC

- G06Q 20/08: Payment architectures
- H04L 41/0866: Checking the configuration
- G06F 9/445: Program loading or initiating (bootstrapping G06F9/4401; security arrangements for program loading or initiating G06F21/57)
- G06Q 20/0855: {involving a third party}
- G06Q 20/10: specially adapted for electronic funds transfer [EFT] systems; specially adapted for home banking systems
- G06Q 20/108: {Remote banking, e.g. home banking}
- G06F 9/45512: {Command shells}
- G06F 9/45558: {Hypervisor-specific management and integration aspects}
- H04L 67/1095: Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
- 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
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A device may receive information identifying a plurality of requests and identifying a plurality of targets for the plurality of requests. The device may generate respective routes for the plurality of targets, where a route, of the respective routes, for a target, of the plurality of targets, identifies a set of transformations to be applied to a corresponding request of the plurality of requests. The device may apply the respective routes to the plurality of requests to generate processed requests, and may communicate with at least one of the plurality of targets based on the processed requests. The device may receive results based on communicating with the at least one of the plurality of targets, wherein the results are based on the processed requests, and may provide information based on the results.

## Claims

### Claim 1

A method, comprising:
receiving, by a platform, information identifying a plurality of requests,
wherein the information identifying the plurality of requests identifies a plurality of targets for the plurality of requests;
determining, by the platform, respective communication configurations for the plurality of targets;
generating, by the platform and based on the respective communication configurations, respective routes for the plurality of targets,
wherein a route, of the respective routes, for a target, of the plurality of targets, identifies a set of transformations to be applied to a corresponding request of the plurality of requests, and
wherein the set of transformations relates to at least one of a proxy setting, a payload transformation, or an address transformation for the corresponding request;
applying, by the platform, the respective routes to the plurality of requests to generate processed requests,
wherein the processed requests are generated based on applying the respective routes in a parallel and asynchronous fashion;
aggregating, by the platform, the processed requests for concurrent provision;
concurrently providing, by the platform, the processed requests to the plurality of targets using a non-blocking input/output (NIO) technique;
receiving, by the platform, results associated with the processed requests using the NIO technique; and
providing, by the platform, information based on the results.

### Claim 2 (depends on 1)

The method of claim 1, wherein applying the respective routes in the parallel and asynchronous fashion further comprises:
applying the respective routes using a parallel processing technique with a configurable number of threads.

### Claim 3 (depends on 1)

The method of claim 1, further comprising:
determining that a result, of the results, indicates that a processed request, of the processed requests, is associated with an error; and
performing processing of the result to determine a reason for the error,
wherein the processing of the result is performed using an asynchronous NIO technique.

### Claim 4 (depends on 1)

The method of claim 1, wherein the NIO technique is a reactive NIO technique.

### Claim 5 (depends on 4)

The method of claim 4, wherein the reactive NIO technique is a synchronous reactive NIO technique.

### Claim 6 (depends on 4)

The method of claim 4, wherein the reactive NIO technique is an asynchronous reactive NIO technique.

### Claim 7 (depends on 1)

The method of claim 1, wherein the set of transformations relates to at least one of a communication channel configuration, an authentication configuration, or a format transformation for the corresponding request.

### Claim 8

A device, comprising:
one or more memories; and
one or more processors, communicatively coupled to the one or more memories, configured to:
receive information identifying a plurality of requests,
wherein the information identifying the plurality of requests identifies a plurality of targets for the plurality of requests;
determine respective communication configurations for the plurality of targets;
generate respective routes for the plurality of targets based on the respective communication configurations,
wherein a route, of the respective routes, for a target, of the plurality of targets, identifies a set of transformations to be applied to a corresponding request of the plurality of requests, and
wherein the set of transformations relates to at least one of a proxy setting, a payload transformation, or an address transformation for the corresponding request;
apply the respective routes to the plurality of requests to generate processed requests wherein the processed requests are generated based on applying the respective routes in a parallel and asynchronous fashion;
aggregate the processed requests for concurrent provision;
communicate with the plurality of targets based on the processed requests using a reactive non-blocking input/output (NIO) technique to obtain results associated with the processed requests; and
provide information based on the results.

### Claim 9 (depends on 8)

The device of claim 8, wherein the one or more processors are further configured to:
determine that a particular target, of the plurality of targets, is not associated with a set of transformations; and
wherein the one or more processors, when generating the respective routes, are further configured to:
generate a route for the particular target using a default set of transformations.

### Claim 10 (depends on 8)

The device of claim 8, wherein the one or more processors are further configured to:
generate an identifier for a particular request to be provided to a user device from which the particular request is received; and
provide, based on receiving the identifier, a status of the particular request or a result corresponding to the particular request.

### Claim 11 (depends on 8)

The device of claim 8, wherein the one or more processors are further configured to:
perform authentication or validation of the plurality of requests; and
wherein the one or more processors, when generating the respective routes for the plurality of targets, are further configured to:
selectively generate the respective routes based on a result of performing authentication or validation of the plurality of requests.

### Claim 12 (depends on 8)

The device of claim 8, wherein the plurality of requests is associated with a payload that identifies parameters for processing the plurality of requests by the plurality of targets.

### Claim 13 (depends on 12)

The device of claim 12, wherein different processed requests are associated with different portions of the payload.

### Claim 14

A non-transitory computer-readable medium storing instructions, the instructions comprising:
one or more instructions that, when executed by one or more processors, cause the one or more processors to:
receive information identifying a plurality of requests,
wherein the information identifying the plurality of requests identifies a plurality of targets for the plurality of requests;
generate respective routes for the plurality of targets,
wherein a route, of the respective routes, for a target, of the plurality of targets, identifies a set of transformations to be applied to a corresponding request of the plurality of requests, and
wherein the set of transformations relates to at least one of a proxy setting, a payload transformation, or an address transformation for the corresponding request;
apply the respective routes to the plurality of requests to generate processed requests,
wherein the processed requests are generated based on applying the respective routes in a parallel and asynchronous fashion;
aggregate the processed requests for concurrent provision;
communicate with at least one of the plurality of targets based on the aggregated processed requests;
receive results based on communicating with the at least one of the plurality of targets,
wherein the results are based on the processed requests; and
provide information based on the results.

### Claim 15 (depends on 14)

The non-transitory computer-readable medium of claim 14, where the one or more instructions, that cause the one or more processors to communicate with at least one of the plurality of targets, further cause the one or more processors to:
communicate with at least one of the plurality of targets using a reactive non-blocking input/output technique.

### Claim 16 (depends on 14)

The non-transitory computer-readable medium of claim 14, where the one or more instructions, when executed by the one or more processors, cause the one or more processors to:
receive information indicating that a procedure associated with a processed request has failed; and
determine an error handling technique for the procedure associated with the processed request based on the procedure having failed.

### Claim 17 (depends on 14)

The non-transitory computer-readable medium of claim 14, wherein the one or more instructions, when executed by the one or more processors, cause the one or more processors to:
determine whether communication with the plurality of targets is to be performed synchronously or asynchronously; and
wherein the one or more instructions, that cause the one or more processors to communicate with the plurality of targets, cause the one or more processors to:
selectively communicate with the plurality of targets synchronously or asynchronously based on the determination.

### Claim 18 (depends on 14)

The non-transitory computer-readable medium of claim 14, where the one or more instructions, when executed by the one or more processors, cause the one or more processors to:
select the at least one of the plurality of targets based on the plurality of requests; and
wherein the one or more instructions, that cause the one or more processors to communicate with the at least one of the plurality of targets, cause the one or more processors to:
communicate with the at least one of the plurality of targets based on selecting the at least one of the plurality of targets.

### Claim 19 (depends on 1)

The method of claim 1, further comprising:
determining that a result, of the results, indicates that a processed request, of the processed requests, is associated with:
an acceptance of the processed request, or
a denial of the processed request.

### Claim 20 (depends on 8)

The device of claim 8, wherein the one or more processors are further to:
generate a plurality of shells for the plurality of requests; and
populating a respective shell, of the plurality of shells, with information indicating a status of a request, of the plurality of requests.
