# US 11,909,801 B1 · Ultra-low latency parsing system and method

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

- Number: US 11,909,801 B1
- Document ID: US11909801B1
- Status: Granted
- Kind: B1
- Application number: 18/366,123
- Filed: 2023-08-07
- Granted: 2024-02-20
- Earliest claimed: 2023-08-07
- Assignees: Morgan Stanley Services Group Inc.
- Applicants: Morgan Stanley Services Group Inc.
- Inventors: Joveria Asif
- Web page: https://patentgrep.com/patent/US11909801B1

## CPC

- H04L 65/764: {at the destination (reformatting of additional data in video clients H04N21/4355)}
- G06Q 40/04: Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)
- 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

## Abstract

A first code generator identifies a value representing a start of a data frame. In response the first code generator outputs a first code representing at least the start of data frame. Fixed parsing components each output a portion of the data located at a respective offset and having a respective data length, in response to receiving the first code from the first code generator. The extracted respective portion of the data is output. For each respective one of a plurality of data messages a finite state machine identifies a length of the respective data message. For each of a plurality of portions of data in the respective data message, the finite state machine reads a length of a respective portion of data, traverses the portion of the data, calculates an associated adjust factor, and outputs a GO control signal and the adjust factor, used by a plurality of variable parsing components.

## Claims

### Claim 1

A computerized data parsing apparatus, comprising:
circuitry that is configured to perform the following:
identify, by a first code generator, a value representing a start of a data frame included in a data payload that includes a plurality of data messages and, in response to identifying the value representing the start of the data frame, output a first signal representing at least the start of the data frame;
extract, by each of a plurality of fixed parsing components, in response to receiving the first signal from the first code generator, a respective portion of the data that is located at a respective offset and having a respective data length, and to output the extracted respective portion of the data;
for each respective data message in the plurality of data messages:
identify, by a finite state machine, a length of the respective data message;
for each of a plurality of portions of data in the respective data message until reaching the length of the respective data message:
read, by the finite state machine, a length value respectively representing a length of a portion of data in the respective data message;
traverse, by the finite state machine, as a function of the length value, the portion of the data in the respective data message until reaching the portion's end;
calculate, by the finite state machine, an adjust factor associated with a data shift associated with the respective data message;
output, by the finite state machine, a GO control signal and the adjust factor;
extract, by each of a plurality of variable parsing components, in response to receiving the GO control signal and the adjust factor, a respective portion of data located in the data at a respective offset as altered by the adjust factor and ending at a location associated with a respective data length; and
output the extracted portion of the data.

### Claim 2 (depends on 1)

The apparatus of claim 1, wherein the circuitry is further configured to perform the following:
output, by each of the plurality of fixed parsing components and the variable parsing components, respective portions of the data in one-byte increments;
receive, by an amalgamator from each of the fixed parsing components and the variable parsing components, respective ones of the one-byte increments; and
output, by the amalgamator to at least one application, at least some of the respective ones of the one-byte increments.

### Claim 3 (depends on 2)

The apparatus of claim 2, wherein the circuitry is further configured to perform the following:
stop outputting, by the amalgamator to at least one application, the respective one-byte increments prior to outputting all of the one-byte increments.

### Claim 4 (depends on 1)

The apparatus of claim 1, wherein each of the plurality of fixed parsing components is configured with parameters representing an offset and a length.

### Claim 5 (depends on 4)

The apparatus of claim 4, wherein the parameters are based on a published specification from a provider of the data, wherein the published specification represents a protocol of the data.

### Claim 6 (depends on 5)

The apparatus of claim 5, wherein a total number of the plurality of fixed parsing components is based on the published specification.

### Claim 7 (depends on 1)

The apparatus of claim 1, wherein the circuitry is further configured to perform the following:
output, by a code signal generator included with the finite state machine, the GO control signal and the adjust factor as the finite state machine traverses, as a function of the length value, the portion of the data in the respective data message until reaching the portion's end.

### Claim 8 (depends on 1)

The apparatus of claim 1, wherein the circuitry is further configured to perform the following:
output, by the first code generator, the first code representing at least the start of data frame only once for a first of the plurality of data messages.

### Claim 9 (depends on 1)

The apparatus of claim 1, wherein the data include market data received from a respective data exchange.

### Claim 10 (depends on 1)

The apparatus of claim 1, wherein a first of the plurality of data messages is formatted in a first protocol and at least one other of the plurality of data messages is formatted in a different protocol.

### Claim 11

A computerized data parsing method, the method comprising:
identifying, by a first code generator, a value representing a start of a data frame included in a data payload that includes a plurality of data messages;
in response to identifying the value representing the start of the data frame, outputting, by the first code generator, a first signal representing at least the start of the data frame;
extracting, by each of a plurality of fixed parsing components in response to receiving the first signal from the first code generator, a respective portion of the data that is located at a respective offset and having a respective data length;
outputting, by each of the plurality of fixed parsing components, the extracted respective portion of the data;
for each respective data message in the plurality of data messages:
identifying, by a finite state machine, a length of the respective data message;
for each of a plurality of portions of data in the respective data message until reaching the length of the respective data message:
reading, by the finite state machine, a length value respectively representing a length of a portion of data in the respective data message;
traversing, by the finite state machine as a function of the length value, the portion of the data in the respective data message until reaching the portion's end;
calculating, by the finite state machine, an adjust factor associated with a data shift associated with the respective data message;
outputting, by the finite state machine, a GO control signal and the adjust factor;
extracting, by each of a plurality of variable parsing components in response to receiving the GO control signal and the adjust factor, a respective portion of data located in the data at a respective offset as altered by the adjust factor and ending at a location associated with a respective data length; and
outputting, by at least one of the variable parsing components, the extracted portion of the data.

### Claim 12 (depends on 11)

The method of claim 11, further comprising:
outputting, by at least one of the plurality of fixed parsing components and the variable parsing components, respective portions of the data in one-byte increments; and
receiving, by an amalgamator from the at least one of the plurality of fixed parsing components and the variable parsing components, respective ones of the one-byte increments; and
outputting, by the amalgamator to at least one application, at least some of the respective ones of the one-byte increments.

### Claim 13 (depends on 12)

The method of claim 12, further comprising:
stopping output, by the amalgamator to at least one application, the respective one-byte increments prior to outputting all of the one-byte increments.

### Claim 14 (depends on 11)

The method of claim 11, wherein each of the plurality of fixed parsing components is configured with parameters representing an offset and a length.

### Claim 15 (depends on 14)

The method of claim 14, wherein the parameters are based on a published specification from a provider of the data, wherein the published specification represents a protocol of the data.

### Claim 16 (depends on 15)

The method of claim 15, wherein a total number of the plurality of fixed parsing components is based on the published specification.

### Claim 17 (depends on 11)

The method of claim 11, wherein the finite state machine comprises a code signal generator, and further comprising:
causing, by the finite state machine, the code signal generator to output the GO control signal and the adjust factor while traversing, by the finite state machine, as a function of the length value, the portion of the data in the respective data message until reaching the portion's end.

### Claim 18 (depends on 11)

The method of claim 11, further comprising:
outputting, by the first code generator, the first code representing at least the start of data frame only once for a first of the plurality of data messages.

### Claim 19 (depends on 11)

The method of claim 11, wherein the data include market data received from a respective data exchange.

### Claim 20 (depends on 11)

The method of claim 11, wherein a first of the plurality of data messages is formatted in a first protocol and at least one other of the plurality of data messages is formatted in a different protocol.
