IP Library Granted Patent US 12,328,254
Granted Patent B2
US 12,328,254 · App. 17/845,506 · Granted Jun 10, 2025

Routing using partial message parsing

Inventors: Piaw Na (Mountain View, CA); Renana Yacobi (Kenmore, WA)
Assignee: Niantic, Inc.
H04L45/3065
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 12,328,254
App. No.
17/845,506
Granted
Jun 10, 2025
Kind
B2
Abstract

A message router partially decodes messages to determine how to route the messages. The message router receives a message and identifies a field of the message as a candidate field for including an envelope identifier that indicates an envelope type of the message. The envelope type of the message indicates where information, such as where to route the message, is stored within the message. The message router attempts to decode the candidate field to determine whether the candidate field includes the envelope identifier, and responsive to the candidate filed including the envelope identifier, the message router determines the envelope type of the message. The message router routes the message according to the envelope type.

Claims (58)

1. A method for routing a message in a network, the method comprising:

receiving the message at a message router;

identifying a field of the message as a candidate field for including an envelope identifier, the envelope identifier indicating an envelope type of the message, wherein identifying the field of the message as the candidate field comprises:

determining whether the field is length delimited; and

responsive to the field being length delimited, selecting the field as the candidate field;

decoding the candidate field to determine whether the candidate field includes the envelope identifier;

responsive to the candidate field including the envelope identifier, determining the envelope type of the message; and

routing the message according to the envelope type.

2. The method of claim 1 , further comprising:

prior to identifying the field as the candidate field for including the envelope identifier, determining that a second field in the message is not a length delimited field; and

writing the second field to a forwarding buffer without decoding the second field.

3. The method of claim 2 , further comprising: responsive to the candidate field including the envelope identifier, writing a remainder of the message to the forwarding buffer.

4. The method of claim 1 , further comprising:

prior to identifying the field as the candidate field for including the envelope identifier, determining that a third field in the message is length delimited;

decoding the third field to determine whether the third field includes the envelope identifier; and

responsive to the third field not including the envelope identifier, writing the third field to a forwarding buffer.

5. The method of claim 4 , further comprising: responsive to the candidate field including the envelope identifier, writing a remainder of the message to the forwarding buffer.

6. The method of claim 1 , wherein determining whether the field is length delimited comprises decoding a start byte.

7. The method of claim 1 , wherein the envelope identifier is indicative of which bytes in the message correspond to routing information.

8. The method of claim 1 , wherein routing the message comprises extracting a payload from the message and forwarding the payload to a destination in a network without forwarding remaining fields of the message.

9. A non-transitory computer-readable storage medium storing instructions that, when executed by a processor, cause the processor to perform operations comprising:

receiving a message at a message router;

identifying a field of the message as a candidate field for including an envelope identifier, the envelope identifier indicating an envelope type of the message, wherein identifying the field of the message as the candidate field comprises:

determining whether the field is length delimited; and

responsive to the field being length delimited, selecting the field as the candidate field:

decoding the candidate field to determine whether the candidate field includes the envelope identifier;

responsive to the candidate field including the envelope identifier, determining the envelope type of the message; and

routing the message according to the envelope type.

10. The non-transitory computer-readable storage medium of claim 9 , wherein the operations further comprise:

prior to identifying the field as the candidate field for including the envelope identifier, determining that a second field in the message is not a length delimited field; and

writing the second field to a forwarding buffer without decoding the second field.

11. The non-transitory computer-readable storage medium of claim 10 , wherein the operations further comprise: responsive to the candidate field including the envelope identifier, writing a remainder of the message to the forwarding buffer.

12. The non-transitory computer-readable storage medium of claim 9 , wherein the operations further comprise:

prior to identifying the field as the candidate field for including the envelope identifier, determining that a third field in the message is length delimited;

decoding the third field to determine whether the third field includes the envelope identifier; and

responsive to the third field not including the envelope identifier, writing the third field to a forwarding buffer.

13. The non-transitory computer-readable storage medium of claim 12 , wherein the operations further comprise: responsive to the candidate field including the envelope identifier, writing a remainder of the message to the forwarding buffer.

14. The non-transitory computer-readable storage medium of claim 9 , wherein determining whether the field is length delimited comprises decoding a start byte.

15. The non-transitory computer-readable storage medium of claim 9 , wherein the envelope identifier is indicative of which bytes in the message correspond to routing information.

16. The non-transitory computer-readable storage medium of claim 9 , wherein routing the message comprises extracting a payload from the message and forwarding the payload to a destination in a network without forwarding remaining fields of the message.

17. A message router comprising:

a local data store storing a list of client devices connected to the message router; and

a routing module configured to perform operations comprising:

receiving a message at the message router;

identifying a field as a candidate field for including an envelope identifier, the envelope identifier indicating an envelope type of the message, wherein identifying the field of the message as the candidate field comprises:

determining whether the field is length delimited; and

responsive to the field being length delimited, selecting the field as the candidate field;

decoding the candidate field to determine whether the candidate field includes the envelope identifier;

responsive to the candidate field including the envelope identifier, determining the envelope type of the message; and

routing the message according to the envelope type.

18. The message router of claim 17 , wherein the operations further comprise:

prior to identifying the field as the candidate field for including the envelope identifier, determining that a second field in the message is not a length delimited field; and

writing the second field to a forwarding buffer without decoding the second field.

19. The message router of claim 17 , wherein the operations further comprise:

prior to identifying the field as the candidate field for including the envelope identifier, determining that a third field in the message is length delimited;

decoding the third field to determine whether the third field includes the envelope identifier; and

responsive to the third field not including the envelope identifier, writing the third field to a forwarding buffer.

20. The message router of claim 17 , wherein routing the message comprises extracting a payload from the message and forwarding the payload to a destination in a network without forwarding remaining fields of the message.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 16, 2025
From: NIANTIC, INC.
To: NIANTIC SPATIAL, INC.
Reel/Frame 071555/0833 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 14, 2022
From: NA, PIAW; YACOBI, RENANA
To: NIANTIC, INC.
Reel/Frame 060511/0364 →
Continuity (2)
Provisional Application 63213088 · Jun 21, 2021
Related Publication 20220407804A1 · Dec 22, 2022
References Cited (21)
US 7058683B1 · Belissent et al. · 2006 [cited by applicant]
US 7826482B1 · Minei · 2010 [cited by examiner]
US 20020068584A1 · Gage · 2002 [cited by examiner]
US 20040015596A1 · Sapuram et al. · 2004 [cited by applicant]
US 20040160917A1 · Eliznd · 2004 [cited by examiner]
US 20070171924A1 · Eisner et al. · 2007 [cited by applicant]
US 20140029430A1 · Samuels et al. · 2014 [cited by applicant]
US 20160149917A1 · Matthieu et al. · 2016 [cited by applicant]
US 20170085512A1 · Bray et al. · 2017 [cited by applicant]
US 20170163694A1 · Skuratovich et al. · 2017 [cited by applicant]
US 20180165173A1 · Lin et al. · 2018 [cited by applicant]
EP 1499404B1 · 2007 [cited by applicant]
TW 201123807A · 2011 [cited by applicant]
WO WO2008052340A1 · 2008 [cited by applicant]
WO WO2021027949A1 · 2021 [cited by applicant]
Ekendahl, N. “Ada code generation support for Google Protocol Buffers,” In: degree of master, Linköping University, Department of Computer and Information Science, Nov. 2013, sections 2.2.2-2.2.3, pp. 11-14. [cited by applicant]
Jayathilaka, H. et al. “Improved Server Architecture for Highly Efficient Message Mediation,” In: IIWAS'13: Proceedings of International Conference on Information Integration and Web-based Applications & Services, Dec. … [cited by applicant]
PCT International Search Report and Written Opinion, PCT Application No. PCT/IB2022/055730, Sep. 26, 2022, 9 pages. [cited by applicant]
Sucha, M. BC., “Testing Framework for HelenOS,” In: Master's thesis, Comenius University in Bratislava Faculty of Mathematics, Physics and Informatics, 2013, pp. 6-13, 27-43. [cited by applicant]
Taiwan Patent Office, Office Action, Patent Application No. 111122970, Feb. 18, 2023, 22 pages. [cited by applicant]
European Patent Office, Extended European Search Report and Opinion, EP Patent Application No. EP 22827789.3, Mar. 19, 2025, 10 pages. [cited by applicant]