IP Library Granted Patent US 10,148,720
Granted Patent B1
US 10,148,720 · App. 14/562,453 · Granted Dec 4, 2018

Systems and methods for data serialization and transfer

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 10,148,720
App. No.
14/562,453
Granted
Dec 4, 2018
Kind
B1
Abstract

In one embodiment, a method includes serializing a data set into a binary package. The serializing includes, for each element of the data set, determining whether the element includes a predefined multi-bit element value. The serializing further includes encoding a lead byte comprising a data-type identifier and a value indicator. Responsive to a determination that the element includes the predefined multi-bit element value, the encoding of the lead byte comprises setting the value indicator to a preconfigured indicator of the predefined multi-bit element value, the preconfigured indicator requiring fewer bits to represent than the predefined multi-bit element value. Responsive to a determination that the element does not include the predefined multi-bit element value, the encoding of the lead byte comprises setting the value indicator to a preconfigured value-follows indicator. The serializing additionally includes encoding an element-value bit stream when the value indicator is set to the preconfigured value-follows indicator.

Claims (84)

1. A method comprising, by a computer system comprising physical hardware:

at a source, serializing a data set into a binary package for transmission to a destination;

wherein the source and the destination are each preconfigured to use an encoding format that specifies, for each data type of a plurality of data types, a preconfigured indicator of a predefined multi-bit element value, the preconfigured indicator requiring fewer bits to represent than the predefined multi-bit element value;

wherein, for each data type of the plurality of data types, the source and the destination are preconfigured to read the encoding format before any transmission of the predefined multi-bit element value;

wherein the serializing comprises, for each element of the data set:

determining whether a data type of the element corresponds to one of the plurality of data types for which the source is preconfigured;

responsive to a determination that the data type of the element corresponds to at least one data type of the plurality of data types for which the source is preconfigured, determining whether the element includes the predefined multi-bit element value of the at least one data type;

encoding a lead byte comprising a data-type identifier and a value indicator;

wherein, responsive to a determination that the element includes the at least one predefined multi-bit element value of the at least one data type, the encoding of the lead byte comprises setting the value indicator to the preconfigured indicator of the predefined multi-bit element value of the at least one data type;

wherein, responsive to a determination that the element does not include the predefined multi-bit element value of the at least one data type, the encoding of the lead byte comprises setting the value indicator to a preconfigured value-follows indicator;

encoding an element-value bit stream when the value indicator is set to the preconfigured value-follows indicator; and

initiating transmission of the binary package to the destination.

2. The method of claim 1 , wherein the serializing comprises, for each element of the data set corresponding to a data type of a second plurality of data types:

encoding a second lead byte and a variable-size element bit stream; and

wherein the second lead byte comprises a second data-type identifier and an element-size indicator.

3. The method of claim 2 , wherein the second plurality of data types comprises at least one of an array data type, a hashmap data type, and a string data type.

4. The method of claim 1 , wherein the plurality of data types comprises at least one of a DateTime data type, a globally unique identifier (GUID) data type, and a double data type.

5. The method of claim 1 , comprising:

wherein the source comprises a server and the destination comprises a client;

wherein the server and the client implement a standard interface, the standard interface comprising a server-side interface and a client-side interface;

wherein the serializing and the initiating are performed by the computer system via a server-side component of a client-server application;

prior to the serializing, configuring the server component on the server, the configuring comprising:

executing a server application, the executing comprising instantiating a server-side class comprising the server-side interface; and

wherein the server application implements a set of server-side methods defined by the server-side class.

6. The method of claim 5 , wherein:

the set of server-side methods comprises an action-registration method; and

the configuring comprises registering one or more actions via a call to the action-registration method.

7. The method of claim 6 , wherein the registering comprises passing an action-specific execution method to the action-registration method as an argument.

8. The method of claim 6 , wherein the registering comprises passing an action-specific registration method to the action-registration method as an argument.

9. The method of claim 5 , comprising:

receiving a request from the client to execute a registered action;

executing the registered action;

wherein the serializing is performed responsive to the executing of the registered action; and

wherein the binary package comprises an output stream relating to the registered action.

10. The method of claim 9 , wherein the request specifies an index value corresponding to the registered action.

11. The method of claim 1 , wherein:

the source comprises a client;

the destination comprises a server; and

the server and the client implement a standard interface, the standard interface comprising a server-side interface and a client-side interface.

12. An information handling system comprising a computer processor and memory, wherein the computer processor and memory in combination are operable to implement a method comprising:

at a source, serializing a data set into a binary package for transmission to a destination;

wherein the source and the destination are each preconfigured to use an encoding format that specifies, for each data type of a plurality of data types, a preconfigured indicator of a predefined multi-bit element value, the preconfigured indicator requiring fewer bits to represent than the predefined multi-bit element value;

wherein, for each data type of the plurality of data types, the source and the destination are preconfigured to read the encoding format before any transmission of the predefined multi-bit element value;

wherein the serializing comprises, for each element of the data set:

determining whether a data type of the element corresponds to one of the plurality of data types for which the source is preconfigured;

responsive to a determination that the data type of the element corresponds to at least one data type of the plurality of data types for which the source is preconfigured, determining whether the element includes the predefined multi-bit element value of the at least one data type;

encoding a lead byte comprising a data-type identifier and a value indicator;

wherein, responsive to a determination that the element includes the at least one predefined multi-bit element value of the at least one data type, the encoding of the lead byte comprises setting the value indicator to the preconfigured indicator of the predefined multi-bit element value of the at least one data type;

wherein, responsive to a determination that the element does not include the predefined multi-bit element value of the at least one data type, the encoding of the lead byte comprises setting the value indicator to a preconfigured value-follows indicator;

encoding an element-value bit stream when the value indicator is set to the preconfigured value-follows indicator; and

initiating transmission of the binary package to the destination.

13. The information handling system of claim 12 , wherein the serializing comprises, for each element of the data set corresponding to a data type of a second plurality of data types:

encoding a second lead byte and a variable-size element bit stream; and

wherein the second lead byte comprises a second data-type identifier and an element-size indicator.

14. The information handling system of claim 13 , wherein the second plurality of data types comprises at least one of an array data type, a hashmap data type, and a string data type.

15. The information handling system of claim 12 , wherein the plurality of data types comprises at least one of a DateTime data type, a globally unique identifier (GUID) data type, and a double data type.

16. The information handling system of claim 12 , the method comprising:

wherein the source comprises a server and the destination comprises a client;

wherein the server and the client implement a standard interface, the standard interface comprising a server-side interface and a client-side interface;

wherein the serializing and the initiating are performed by the information handling system via a server-side component of a client-server application;

prior to the serializing, configuring the server component on the server, the configuring comprising:

executing a server application, the executing comprising instantiating a server-side class comprising the server-side interface; and

wherein the server application implements a set of server-side methods defined by the server-side class.

17. The method of claim 16 , wherein:

the set of server-side methods comprises an action-registration method; and

the configuring comprises registering one or more actions via a call to the action-registration method, the registering comprising passing an action-specific registration method and an action-specific execution method to the action-registration method as arguments.

18. The method of claim 16 , comprising:

receiving a request from the client to execute a registered action;

executing the registered action;

wherein the serializing is performed responsive to the executing of the registered action; and

wherein the binary package comprises an output stream relating to the registered action.

19. The method of claim 18 , wherein the request specifies an index value corresponding to the registered action.

20. A computer-program product comprising a non-transitory computer-usable medium having computer-readable program code embodied therein, the computer-readable program code adapted to be executed to implement a method comprising:

at a source, serializing a data set into a binary package for transmission to a destination;

wherein the source and the destination are each preconfigured to use an encoding format that specifies, for each data type of a plurality of data types, a preconfigured indicator of a predefined multi-bit element value, the preconfigured indicator requiring fewer bits to represent than the predefined multi-bit element value;

wherein, for each data type of the plurality of data types, the source and the destination are preconfigured to read the encoding format before any transmission of the predefined multi-bit element value;

wherein the serializing comprises, for each element of the data set:

determining whether a data type of the element corresponds to one of the plurality of data types for which the source is preconfigured;

responsive to a determination that the data type of the element corresponds to at least one data type of the plurality of data types for which the source is preconfigured, determining whether the element includes the predefined multi-bit element value of the at least one data type;

encoding a lead byte comprising a data-type identifier and a value indicator;

wherein, responsive to a determination that the element includes the at least one predefined multi-bit element value of the at least one data type, the encoding of the lead byte comprises setting the value indicator to the preconfigured indicator of the predefined multi-bit element value of the at least one data type;

wherein, responsive to a determination that the element does not include the predefined multi-bit element value of the at least one data type, the encoding of the lead byte comprises setting the value indicator to a preconfigured value-follows indicator;

encoding an element-value bit stream when the value indicator is set to the preconfigured value-follows indicator; and

initiating transmission of the binary package to the destination.

Assignments (26)
RELEASE OF SECURITY INTEREST Recorded Nov 19, 2025
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: QUEST SOFTWARE INC.; ANALYTIX DATA SERVICES INC.; BINARYTREE.COM LLC; ERWIN, INC.
Reel/Frame 073606/0001 →
RELEASE OF SECURITY INTEREST Recorded Nov 18, 2025
From: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
To: QUEST SOFTWARE INC.; ANALYTIX DATA SERVICES INC.; BINARYTREE.COM LLC; ERWIN, INC.
Reel/Frame 073613/0326 →
SECURITY INTEREST Recorded Jun 8, 2025
From: QUEST SOFTWARE INC.; ANALYTIX DATA SERVICES INC.; ERWIN, INC.
To: ALTER DOMUS (US) LLC
Reel/Frame 071527/0649 →
SECURITY INTEREST Recorded Jun 8, 2025
From: QUEST SOFTWARE INC.; ANALYTIX DATA SERVICES INC.; ERWIN, INC.
To: ALTER DOMUS (US) LLC
Reel/Frame 071527/0001 →
RELEASE OF FIRST LIEN SECURITY INTEREST IN PATENTS Recorded Feb 2, 2022
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
To: QUEST SOFTWARE INC.
Reel/Frame 059105/0479 →
FIRST LIEN INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Feb 2, 2022
From: QUEST SOFTWARE INC.; ANALYTIX DATA SERVICES INC.; BINARYTREE.COM LLC; ERWIN, INC.; ONE IDENTITY LLC; ONELOGIN, INC.; ONE IDENTITY SOFTWARE INTERNATIONAL DESIGNATED ACTIVITY COMPANY
To: GOLDMAN SACHS BANK USA
Reel/Frame 058945/0778 →
SECOND LIEN INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Feb 2, 2022
From: QUEST SOFTWARE INC.; ANALYTIX DATA SERVICES INC.; BINARYTREE.COM LLC; ERWIN, INC.; ONE IDENTITY LLC; ONELOGIN, INC.; ONE IDENTITY SOFTWARE INTERNATIONAL DESIGNATED ACTIVITY COMPANY
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 058952/0279 →
RELEASE OF SECOND LIEN SECURITY INTEREST IN PATENTS Recorded Feb 2, 2022
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
To: QUEST SOFTWARE INC.
Reel/Frame 059096/0683 →
FIRST LIEN PATENT SECURITY AGREEMENT Recorded Jun 7, 2018
From: QUEST SOFTWARE INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 046327/0347 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Jun 7, 2018
From: QUEST SOFTWARE INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 046327/0486 →
RELEASE OF FIRST LIEN SECURITY INTEREST IN PATENTS RECORDED AT R/F 040581/0850 Recorded May 22, 2018
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
To: QUEST SOFTWARE INC. (F/K/A DELL SOFTWARE INC.); AVENTAIL LLC
Reel/Frame 046211/0735 →
CHANGE OF NAME Recorded Dec 6, 2017
From: DELL SOFTWARE INC.
To: QUEST SOFTWARE INC.
Reel/Frame 044719/0565 →
CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNEE PREVIOUSLY RECORDED AT REEL: 040587 FRAME: 0624. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Nov 28, 2017
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: QUEST SOFTWARE INC. (F/K/A DELL SOFTWARE INC.); AVENTAIL LLC
Reel/Frame 044811/0598 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Nov 10, 2016
From: DELL SOFTWARE INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 040587/0624 →
FIRST LIEN PATENT SECURITY AGREEMENT Recorded Nov 9, 2016
From: DELL SOFTWARE INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 040581/0850 →
RELEASE OF SECURITY INTEREST Recorded Oct 31, 2016
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: AVENTAIL LLC; DELL PRODUCTS, L.P.; DELL SOFTWARE INC.
Reel/Frame 040521/0467 →
RELEASE OF SECURITY INTEREST IN CERTAIN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (040039/0642) Recorded Oct 31, 2016
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
To: AVENTAIL LLC; DELL PRODUCTS L.P.; DELL SOFTWARE INC.
Reel/Frame 040521/0016 →
SECURITY AGREEMENT Recorded Sep 14, 2016
From: AVENTAIL LLC; DELL PRODUCTS, L.P.; DELL SOFTWARE INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 040030/0187 →
RELEASE OF REEL 035104 FRAME 0043 (NOTE) Recorded Sep 14, 2016
From: BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
To: DELL SOFTWARE INC.; DELL PRODUCTS L.P.; COMPELLENT TECHNOLOGIES, INC.
Reel/Frame 040027/0123 →
RELEASE OF REEL 035103 FRAME 0809 (TL) Recorded Sep 14, 2016
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: DELL SOFTWARE INC.; DELL PRODUCTS L.P.; COMPELLENT TECHNOLOGIES, INC.
Reel/Frame 040027/0934 →
SECURITY AGREEMENT Recorded Sep 14, 2016
From: AVENTAIL LLC; DELL PRODUCTS L.P.; DELL SOFTWARE INC.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 040039/0642 →
RELEASE OF REEL 035103 FRAME 0536 (ABL) Recorded Sep 13, 2016
From: BANK OF AMERICA, N.A., AS ADMINISTRATIVE AGENT
To: DELL SOFTWARE INC.; DELL PRODUCTS L.P.; COMPELLENT TECHNOLOGIES, INC.
Reel/Frame 040016/0864 →
SUPPLEMENT TO PATENT SECURITY AGREEMENT (NOTES) Recorded Feb 26, 2015
From: DELL PRODUCTS L.P.; DELL SOFTWARE INC.; COMPELLENT TECHNOLOGIES, INC.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 035104/0043 →
SUPPLEMENT TO PATENT SECURITY AGREEMENT (TERM LOAN) Recorded Feb 26, 2015
From: DELL PRODUCTS L.P.; DELL SOFTWARE INC.; COMPELLENT TECHNOLOGIES, INC.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 035103/0809 →
SUPPLEMENT TO PATENT SECURITY AGREEMENT (ABL) Recorded Feb 26, 2015
From: DELL PRODUCTS L.P.; DELL SOFTWARE INC.; COMPELLENT TECHNOLOGIES, INC.
To: BANK OF AMERICA, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 035103/0536 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 11, 2014
From: NUTTER, STEWART
To: DELL SOFTWARE INC.
Reel/Frame 034476/0040 →