# US 10,313,454 B2 · Method of transmitting data structures from one computer to another computer

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

- Number: US 10,313,454 B2
- Document ID: US10313454B2
- Status: Granted
- Kind: B2
- Application number: 14/913,669
- Filed: 2014-08-20
- Published: 2016-07-14
- Granted: 2019-06-04
- Earliest claimed: 2013-08-22
- Assignees: Deep-Secure Limited
- Applicants: Deep-Secure Limited
- Inventors: Simon Robert Wiseman
- Web page: https://patentgrep.com/patent/US10313454B2

## CPC

- H04L 67/025: for remote control or remote monitoring of applications
- H04L 67/52: specially adapted for the location of the user terminal
- H04L 67/75: Indicating network or usage conditions on the user display
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

A data structure is transmitted from a first computer to a second computer by transmitting a plurality of messages from the first computer to the second computer. Each message contains data of a node of the structure and one or more references to child pointer locations in previously transmitted nodes. The data of each transmitted node is stored in the second computer, and the location of each node is stored in a table of addresses and the or each reference includes an index into the table of addresses. The first computer may then use indexes into the table to identify which nodes need updating, and thus avoid the need for the first computer to know how the second computer is allocating nodes in memory. The or each reference may include an index into an array of child pointers belonging to a node, may include the sequence number of the parent node of the node being transmitted and may also include the index into the parent node's children to the pointer to the node being transmitted.

## Claims

### Claim 1

A method of building an acyclic graph data structure sent from a first computer to a second computer comprising the steps of:
receiving, by the second computer, a plurality of messages sent from the first computer to the second computer, each message containing data of a node of the acyclic graph data structure and one or more references to child pointer locations in any previously transmitted parent nodes to said node;
building the acyclic graph data structure on the second computer, wherein building includes:
storing the data of each transmitted node in a memory of the second computer;
storing the location of an address at which each node is stored in the memory of the second computer in a table of addresses; and
storing a child pointer to each node stored in the second computer at the or each child pointer location referenced in the message, wherein the or each reference to a child pointer location comprises an index into the table of addresses; and
processing, by an application running on the second computer, the acyclic graph data structure during the building of the acyclic graph data structure on the second computer.

### Claim 2 (depends on 1)

A method as claimed in claim 1 wherein the or each reference to a child pointer location further comprises an index into an array of child pointers belonging to a node.

### Claim 3 (depends on 1)

A method as claimed in claim 1 wherein the address of a node stored in the table is removed when the node has been completed in the second computer.

### Claim 4 (depends on 1)

A method as claimed in claim 1 wherein the table of addresses is represented as a list of table frames referenced by a table of pointers.

### Claim 5 (depends on 4)

A method as claimed in claim 4 wherein the address of a node stored in the table frames is removed from the table frames when pointers to child nodes have been stored at all child pointer locations and table frames are reused once they become empty.

### Claim 6 (depends on 1)

A method as claimed in claim 1 wherein the application running on the second computer begins processing the acyclic graph data structure before the acyclic graph data structure has been entirely received by the second computer.

### Claim 7 (depends on 6)

A method as claimed in claim 6 wherein the processing of the acyclic graph data structure is suspended when the application seeks to process an incomplete part of the data structure, and resumes when that part of the acyclic graph data structure has been completed.

### Claim 8 (depends on 7)

A method as claimed in claim 7 wherein a variable is set by the application when the application seeks to process an incomplete part of the acyclic graph data structure, and when nodes are created and pointers updated the referenced location is checked against the variable in order to determine if the application may continue.

### Claim 9 (depends on 1)

A method as claimed in claim 1, wherein the second computer constructs nodes in its memory in response to the messages received in such a way that child pointer references that have not been populated can be distinguished from the remainder of the node.

### Claim 10 (depends on 9)

A method as claimed in claim 9 wherein the second computer validates the references to child pointer locations contained in the messages by checking if the location they reference is a child pointer that has not been populated.

### Claim 11 (depends on 9)

A method as claimed in claim 9 wherein a tag bit associated with each data location is used to distinguish between a location that contains a child pointer that has yet to be populated and a location that contains a data value or populated child pointer.

### Claim 12 (depends on 9)

A method as claimed in claim 9 wherein a child pointer that has yet to be populated is distinguished from a location that contains a data value or populated child pointer by containing a special value that is never used as a data value or populated child pointer.

### Claim 13 (depends on 9)

A method as claimed in claim 9 wherein a child pointer that has yet to be populated is assigned a NULL value.

### Claim 14 (depends on 10)

A method as claimed in claim 10 wherein a tag bit associated with each data location is used to distinguish between a location that contains a child pointer that has yet to be populated and a location that contains a data value or populated child pointer.

### Claim 15 (depends on 10)

A method as claimed in claim 10 wherein a child pointer that has yet to be populated is distinguished from a location that contains a data value or populated child pointer by containing a special value that is never used as a data value or populated child pointer.

### Claim 16 (depends on 10)

A method as claimed in claim 10 wherein a child pointer that has yet to be populated is assigned a NULL value.

### Claim 17

A method of building a data structure sent from a first computer to a second computer comprising the steps of:
receiving, by the second computer, a plurality of messages sent from the first computer to the second computer, each message containing data of a node of the data structure and one or more references to child pointer locations in previously transmitted nodes;
building the data structure on the second computer, wherein building the data structure includes:
storing the data of each transmitted node in a memory of the second computer; and
storing the location at which each node is stored in the memory of the second computer in a table of addresses wherein the or each reference to a child pointer location comprises an index into the table of addresses;
and
processing, by an application running on the second computer, the data structure during the building of the data structure on the second computer.
