IP Library Granted Patent US 11,108,758
Granted Patent B2
US 11,108,758 · App. 16/377,017 · Granted Aug 31, 2021

Reactive programming subscription context

Inventors: Joseph Benjamin Hale (Corte Madera, CA); Stéphane Adrien Joseph Maldini (San Francisco, CA); Simon Baslé (Nantes, FR)
Assignee: Pivotal Software, Inc.
H04L63/08H04L67/2809
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 11,108,758
App. No.
16/377,017
Granted
Aug 31, 2021
Kind
B2
Abstract

Methods, systems, and apparatus, including computer programs encoded on computer storage media, for implementing subscription contexts in a reactive programming system. One of the methods includes receiving, by a reactive programming system comprising one or more computers, a reactive programming program defining an ordering of a plurality of operators, the plurality of operators including a subscriber context operator that writes a value to a subscription context for a particular subscriber, wherein the ordering defines an upstream subscription flow ordering from the particular subscriber to a publisher and a downstream data flow ordering from the publisher to the particular subscriber. The operators are evaluated in the upstream subscription flow ordering, including updating a subscription context of each operator with the value written by the subscriber context operator.

Claims (27)

1. A reactive programming system comprising:

one or more computers and one or more storage devices storing instructions that are operable, when executed by the one or more computers, to cause the one or more computers to perform operations comprising:

receiving a reactive programming program defining an ordering of a plurality of operators, the plurality of operators including a subscriber context operator that writes a value to a subscription context for a particular subscriber, wherein the ordering defines an upstream subscription flow ordering from the particular subscriber to a publisher and a downstream data flow ordering from the publisher to the particular subscriber, and wherein the value written to the subscription context is only available to operators that are upstream from the subscriber context operator, and wherein the plurality of operators include a second subscriber context operator that is upstream from the subscriber context operator, and wherein updating the subscription context for the second subscriber context operator comprises merging a second value written by the second subscriber context with the value written by the subscriber context operator;

evaluating the operators in the upstream subscription flow ordering, including updating a subscription context of each operator with the value written by the subscriber context operator; and

upon receiving an input data item, processing the input data item using the operators in the downstream data flow ordering to generate a final output data item for the input data item, wherein one or more operators that are executed in the downstream data flow ordering access the value of the subscription context written by the subscriber context operator or second subscriber context operator during evaluation of the operations in the upstream subscription flow ordering regardless of which threads executed the respective operators.

2. The system of claim 1 , wherein the subscriber context operator occurs in the program after one or more other operators but is executed before any of the other operators.

3. The system of claim 1 , wherein evaluating the operators in the upstream subscription flow ordering propagates the subscription context from the particular subscriber to the publisher.

4. The system of claim 1 , wherein one or more of the operators are executed by different threads of the reactive programming system.

5. The system of claim 1 , wherein accessing, by a particular operator, the value of the subscription context comprises requesting the value of the subscription context from another operator downstream from the particular operator.

6. The system of claim 1 , wherein the subscription context is immutable while processing the input data item using the operators in the downstream data flow.

7. The system of claim 1 , wherein a second subscriber context operator that is upstream from the subscriber context operator writes a second value that masks the value written by the subscriber context operator by making a copy of the subscription context having the second value.

8. The system of claim 1 , wherein a nested value, written by a nested subscriber context operator that is nested inside a first operator of the plurality of operators, is not visible to any upstream operators of the first operator.

9. A computer-implemented method comprising:

receiving, by a reactive programming system comprising one or more computers, a reactive programming program defining an ordering of a plurality of operators, the plurality of operators including a subscriber context operator that writes a value to a subscription context for a particular subscriber, wherein the ordering defines an upstream subscription flow ordering from the particular subscriber to a publisher and a downstream data flow ordering from the publisher to the particular subscriber, and wherein the value written to the subscription context is only available to operators that are upstream from the subscriber context operator, and wherein the plurality of operators include a second subscriber context operator that is upstream from the subscriber context operator, and wherein updating the subscription context for the second subscriber context operator comprises merging a second value written by the second subscriber context with the value written by the subscriber context operator;

evaluating, by the reactive programming system, the operators in the upstream subscription flow ordering, including updating a subscription context of each operator with the value written by the subscriber context operator; and

upon receiving an input data item, processing, by the reactive programming system, the input data item using the operators in the downstream data flow ordering to generate a final output data item for the input data item, wherein one or more operators that are executed in the downstream data flow ordering access the value of the subscription context written by the subscriber context operator during evaluation of the operations in the upstream subscription flow ordering regardless of which threads executed the respective operators.

10. The method of claim 9 , wherein the subscriber context operator occurs in the program after one or more other operators but is executed before any of the other operators.

11. The method of claim 9 , wherein evaluating the operators in the upstream subscription flow ordering propagates the subscription context from the particular subscriber to the publisher.

12. The method of claim 9 , wherein one or more of the operators are executed by different threads of the reactive programming system.

13. The method of claim 9 , wherein accessing, by a particular operator, the value of the subscription context comprises requesting the value of the subscription context from another operator downstream from the particular operator.

14. The method of claim 9 , wherein the subscription context is immutable while processing the input data item using the operators in the downstream data flow.

15. The method of claim 9 , wherein a second subscriber context operator that is upstream from the subscriber context operator writes a second value that masks the value written by the subscriber context operator by making a copy of the subscription context having the second value.

16. The method of claim 9 , wherein a nested value, written by a nested subscriber context operator that is nested inside a first operator of the plurality of operators, is not visible to any upstream operators of the first operator.

17. A computer program product, encoded on one or more non-transitory computer storage media, comprising instructions that when executed by one or more computers of a reactive programming system cause the one or more computers to perform operations comprising:

receiving a reactive programming program defining an ordering of a plurality of operators, the plurality of operators including a subscriber context operator that writes a value to a subscription context for a particular subscriber, wherein the ordering defines an upstream subscription flow ordering from the particular subscriber to a publisher and a downstream data flow ordering from the publisher to the particular subscriber, and wherein the value written to the subscription context is only available to operators that are upstream from the subscriber context operator, and wherein the plurality of operators include a second subscriber context operator that is upstream from the subscriber context operator, and wherein updating the subscription context for the second subscriber context operator comprises merging a second value written by the second subscriber context with the value written by the subscriber context operator;

evaluating the operators in the upstream subscription flow ordering, including updating a subscription context of each operator with the value written by the subscriber context operator; and

upon receiving an input data item, processing the input data item using the operators in the downstream data flow ordering to generate a final output data item for the input data item, wherein one or more operators that are executed in the downstream data flow ordering access the value of the subscription context written by the subscriber context operator during evaluation of the operations in the upstream subscription flow ordering regardless of which threads executed the respective operators.

Assignments (2)
MERGER Recorded May 20, 2026
From: PIVOTAL SOFTWARE, INC.
To: VMWARE LLC
Reel/Frame 075613/0593 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 4, 2019
From: HALE, JOSEPH BENJAMIN; MALDINI, STÉPHANE ADRIEN JOSEPH; BASLÉ, SIMON
To: PIVOTAL SOFTWARE, INC.
Reel/Frame 051178/0599 →
Continuity (2)
Provisional Application 62682629 · Jun 8, 2018
Related Publication 20190379650A1 · Dec 12, 2019