IP Library Granted Patent US 10,051,438
Granted Patent B2
US 10,051,438 · App. 14/012,712 · Granted Aug 14, 2018

Message matching

Inventors: Stephen Asbury (Pasadena, CA); Russell Selph (Palo Alto, CA)
Assignee: TIBCO SOFTWARE INC.
H04W4/08
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,051,438
App. No.
14/012,712
Granted
Aug 14, 2018
Kind
B2
Abstract

Processing a message is disclosed. For each field group applicable to a message from one or more unique field groups of one or more fields identified using one or more content matchers, a compiled message corresponding to the field group applicable to the message is generated. It is determined whether one or more of the compiled messages matches one or more of the one or more content matchers.

Claims (37)

1. A system, comprising:

a processor; and

a memory coupled to the processor and configured to provide the processor with instructions, wherein the processor is configured to:

receive, from a message provider server via a network, a message in a first format, wherein the message is part of a message stream comprising a plurality of messages and wherein the message is comprised of one or more structured field value pairs;

receive one or more content matchers from a subscriber device via the network, wherein the one or more content matchers includes a content matcher, wherein the content matcher indicates one or more messages of the message stream to which the subscriber device is subscribed to receive, wherein the content matcher includes one or more structured field value pairs specified by a subscriber, wherein the one or more structured field value pairs of the content matcher indicate content of the one or more messages to which the subscriber device is subscribed to receive, wherein a first field group of a set of field groups of one or more fields is determined by extracting all field identifiers included in the one or more content matchers;

convert the content matcher into a standardized format, wherein the standardized format rearranges the one or more structured field value pairs of the content matcher in a first determined order;

compile each of the one or more content matchers, wherein compiling at least one of the one or more content matchers includes reversing ordering of each of the one or more field value pairs so that a field value pair becomes a value field pair;

generate a compiled message at least in part by rearranging the one or more structured field values pairs of the message in a second determined order;

determine whether the one or more structured field value pairs of the compiled message matches the one or more structured field value pairs of the converted content matcher, wherein a structured field value pair of the compiled message matches a structured field value pair of the converted content matcher in the event a field of the structured field value pair of the compiled message matches a field of the structured field value pair of the converted content matcher and a value of the structured field value pair of the compiled message matches a value of the structured field value pair of the converted content matcher; and

in response to determining that the one or more structured field value pairs of the compiled message match the one or more structured field value pairs of the converted content matcher, distribute to the subscriber device via the network the message that is comprised of one or more structured field value pairs to the subscriber device.

2. The system of claim 1 , wherein each of the one or more content matchers specifies at least one field and an associated value.

3. The system of claim 2 , wherein the associated value is a Boolean value.

4. The system of claim 1 , wherein the content matcher and the message are specified in JavaScript Object Notation.

5. The system of claim 1 , wherein each of the one or more content matchers is associated with one or more identifiers of one or more subscribers that are identified to receive any message that matches the associated content matcher.

6. The system of claim 1 , wherein the all field identifiers is arranged in the field group in an order associated with an alphabetical order of the all field identifiers.

7. The system of claim 1 , wherein a set of field groups is determined by determining all fields included in each of the one or more content matchers and storing the fields of each content matcher as a grouping only if a same grouping has not been previously stored.

8. The system of claim 1 , wherein the one or more compiled content matchers are stored in a data storage structure that associates each of the one or more compiled content matchers with one or more message subscribers.

9. The system of claim 1 , wherein a field group of a set of field groups is identified as applicable to the message at least in part by determining all fields included in the one or more content matchers and determining which field group of the set of field groups is at least a subset of the all fields of the message.

10. The system of claim 1 , wherein generating the compiled message includes extracting one or more field value pairs included in the message for each field of the one or more field value pairs and ordering one or more field value pairs in the determined order.

11. The system of claim 10 , wherein generating the compiled message includes reversing ordering of each of the one or more field value pairs so that a field value pair becomes a value field pair.

12. The system of claim 1 , wherein determining whether the one or more structured field value pairs of the compiled message matches the one or more structured field value pairs of the converted content matcher includes searching a data storage structure storing a compiled version of one or more content matchers to determine whether the one or more structured field value pairs of the compiled message matches one or more of the one or more structured field value pairs of one or more content matchers.

13. A method, comprising:

receiving, from a message provider server via a network, a message in a first format, wherein the message is part of a message stream comprising a plurality of messages and wherein the message is comprised of one or more structured field value pairs;

receiving one or more content matchers from a subscriber device via the network, wherein the one or more content matchers includes a content matcher, wherein the content matcher indicates one or more messages of the message stream to which the subscriber device is subscribed to receive, wherein the content matcher includes one or more structured field value pairs specified by a subscriber, wherein the one or more structured field value pairs of the content matcher indicate content of the one or more messages to which the subscriber device is subscribed to receive, wherein a first field group of a set of field groups of one or more fields is determined by extracting all field identifiers included in the one or more content matchers;

converting the content matcher into a standardized format, wherein the standardized format rearranges the one or more structured field value pairs of the content matcher in a first determined order;

compiling each of the one or more content matchers, wherein compiling at least one of the one or more content matchers includes reversing ordering of each of the one or more field value pairs so that a field value pair becomes a value field pair;

generating a compiled message at least in part by rearranging the one or more structured field value pairs of the message in a second determined order;

determining, using a processor, whether the one or more structured field value pairs of the compiled message matches the one or more structured field value pairs of the converted content matcher, wherein a structured field value pair of the compiled message matches a structured field value pair of the converted content matcher in the event a field of the structured field value pair of the compiled message matches a field of the structured field value pair of the converted content matcher and a value of the structured field value pair of the compiled message matches a value of the structured field value pair of the converted content matcher; and

in response to determining that the one or more structured field value pairs of the compiled message match the one or more structured field value pairs of the converted content matcher, distributing to the subscriber device via the network the message that is comprised of one or more structured field value pairs to the subscriber device.

14. A computer program product, the computer program product being embodied in a tangible non-transitory computer readable storage medium and comprising computer instructions for:

receiving, from a message provider server via a network, a message in a first format, wherein the message is part of a message stream comprising a plurality of messages and wherein the message is comprised of one or more structured field value pairs;

receiving one or more content matchers from a subscriber device via the network, wherein the one or more content matchers includes a content matcher, wherein the content matcher indicates one or more messages of the message stream to which the subscriber device is subscribed to receive, wherein the content matcher includes one or more structured field value pairs specified by a subscriber, wherein the one or more structured field value pairs of the content matcher indicate content of the one or more messages to which the subscriber device is subscribed to receive, wherein a first field group of a set of field groups of one or more fields is determined by extracting all field identifiers included in the one or more content matchers;

converting the content matcher into a standardized format, wherein the standardized format rearranges the one or more structured field value pairs of the content matcher in a first determined order;

compiling each of the one or more content matchers, wherein compiling at least one of the one or more content matchers includes reversing ordering of each of the one or more field value pairs so that a field value pair becomes a value field pair;

generating a compiled message at least in part by rearranging the one or more structured field value pairs of the message in a second determined order;

determining whether the one or more structured field value pairs of the compiled message matches the one or more structured field value pairs of the converted content matcher, wherein a structured field value pair of the compiled message matches a structured field value pair of the converted content matcher in the event a field of the structured field value pair of the compiled message matches a field of the structured field value pair of the converted content matcher and a value of the structured field value pair of the compiled message matches a value of the structured field value pair of the converted content matcher; and

in response to determining that the one or more structured field value pairs of the compiled message match the one or more structured field value pairs of the converted content matcher, distributing to the subscriber device via the network the message that is comprised of one or more structured field value pairs to the subscriber device.

Assignments (15)
PATENT SECURITY AGREEMENT Recorded Aug 15, 2025
From: CLOUD SOFTWARE GROUP, INC.; CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 072488/0172 →
SECURITY INTEREST Recorded May 24, 2024
From: CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.); CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 067662/0568 →
PATENT SECURITY AGREEMENT Recorded Apr 14, 2023
From: CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.); CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 063340/0164 →
RELEASE AND REASSIGNMENT OF SECURITY INTEREST IN PATENT (REEL/FRAME 062113/0001) Recorded Apr 14, 2023
From: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
To: CITRIX SYSTEMS, INC.; CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.)
Reel/Frame 063339/0525 →
CHANGE OF NAME Recorded Feb 7, 2023
From: TIBCO SOFTWARE INC.
To: CLOUD SOFTWARE GROUP, INC.
Reel/Frame 062714/0634 →
PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 062112/0262 →
PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 062113/0470 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
Reel/Frame 062113/0001 →
RELEASE REEL 052115 / FRAME 0318 Recorded Oct 3, 2022
From: KKR LOAN ADMINISTRATION SERVICES LLC
To: TIBCO SOFTWARE INC.
Reel/Frame 061588/0511 →
RELEASE (REEL 034536 / FRAME 0438) Recorded Sep 30, 2022
From: JPMORGAN CHASE BANK, N.A.
To: TIBCO SOFTWARE INC.
Reel/Frame 061574/0963 →
RELEASE (REEL 054275 / FRAME 0975) Recorded May 7, 2021
From: JPMORGAN CHASE BANK, N.A.
To: TIBCO SOFTWARE INC.
Reel/Frame 056176/0398 →
SECURITY AGREEMENT Recorded Nov 2, 2020
From: TIBCO SOFTWARE INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 054275/0975 →
SECURITY AGREEMENT Recorded Mar 6, 2020
From: TIBCO SOFTWARE INC.
To: KKR LOAN ADMINISTRATION SERVICES LLC, AS COLLATERAL AGENT
Reel/Frame 052115/0318 →
SECURITY INTEREST Recorded Dec 5, 2014
From: TIBCO SOFTWARE INC.; TIBCO KABIRA LLC; NETRICS.COM LLC
To: JPMORGAN CHASE BANK., N.A., AS COLLATERAL AGENT
Reel/Frame 034536/0438 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 28, 2013
From: ASBURY, STEPHEN; SELPH, RUSSELL
To: TIBCO SOFTWARE INC.
Reel/Frame 031104/0538 →
Continuity (1)
Related Publication 20150067094A1 · Mar 5, 2015