IP Library Patent Application 12612696
Patent Application
App. No. 12/612,696

MANAGEMENT OF OBSERVABLE COLLECTIONS OF VALUES

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 None
App. No.
12/612,696
Abstract

Architecture that a mathematical duality established herein between an asynchronous observable design pattern and a synchronous iterator design pattern. This provides a mechanism for processing multiple observable collection and asynchronous values associated with those collections, including situations where a single observable collection is directed to multiple subscribers or multiple observable collections are directed to a single subscriber. Operators are presented that facilitate multi-collection processing based on this proven duality. As a result of this duality concurrent asynchronous and event-driven programs can be elegantly formulated. Consequently, asynchronous and event-based programming can now be unified into single conceptual framework, based on sound mathematical principles such as monads and duality.

Claims (29)

1 . A computer-implemented processing system for observable collections, comprising:

one or more observable collections of values; and

a processing component that applies operators and policies to the one or more observable collections to control composition of a target observable collection.

2 . The system of claim 1 , wherein the operators are based on a dual relationship established between an observer design pattern and an iterator design pattern.

3 . The system of claim 1 , wherein the processing component includes an operator that applies a function to an asynchronous value to create an inner observable collection.

4 . The system of claim 1 , wherein the processing component includes an operator that non-deterministically merges asynchronous values of multiple observable collections to the target observable collection while maintaining a causality relationship of the values.

5 . The system of claim 1 , wherein the processing component includes an operator that propagates values from a source observable collection to the target observable collection until an asynchronous value occurs on a control observable collection.

6 . The system of claim 1 , wherein the processing component includes an operator that allows values of an observable collection to be shared within one or more subscribers.

7 . The system of claim 1 , wherein the processing component includes an operator that drops a first value of an observable collection based on a value of another collection value.

8 . The system of claim 1 , wherein the processing component includes an operator that transitions between a nested observable collection to another nested observable collection.

9 . The system of claim 1 , wherein the processing component includes a policy that broadcasts values based on ignoring asynchronous values of one observable collections relative to termination of another observable collection.

10 . The system of claim 1 , wherein the processing component includes a policy that terminates an observable collection in response to creation of another observable collection.

11 . The system of claim 1 , wherein the processing component includes policies that record asynchronous values of a next observable collection until a previous observable collection terminates, and plays back the recorded values according to time information associated with the arrival of the values.

12 . A computer-implemented processing method for observable collections, comprising:

receiving one or more observable collections of values; and

applying at least one of an operator or a policy that manipulate the values into an enumerable collection of values.

13 . The method of claim 12 , further comprising applying the at least one of an operator or a policy to manipulate the enumerable collection of values into an observable collection of values.

14 . The method of claim 12 , further comprising applying an operator that imposes a function on each value of the observable collection of values to produce a result value and then notifies an observer.

15 . The method of claim 12 , further comprising applying one or more operators that merge all values from the observable collections onto a target observable collection.

16 . The method of claim 12 , further comprising applying one or more operators that merge all values from the observable collections onto a target enumerable collection by abandoning a previous inner observable collection once a next inner observable collection is pushed onto a source observable collection.

17 . The method of claim 12 , further comprising applying one or more operators that share an observable collection within a context of a function.

18 . The method of claim 12 , further comprising applying policies of at least one of broadcast, replace, record, or playback to the observable collections to effect values distribution of the observable collection of asynchronous values to one or more observers.

19 . A computer-implemented processing method for observable collections, comprising:

receiving a source observable collection of asynchronous values;

applying a function to the values;

creating inner observable collection based on results of the function being applied to the values;

propagating values from the inner observable collections to a target observable collection until a first asynchronous value occurs on a control observable collection; and

sharing the values of the target observable collection with one or more observers.

20 . The method of claim 19 , further comprising applying policies of at least one of broadcast, replace, record, or playback to values of the target observable collection as part of sharing the asynchronous values.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 15, 2015
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 034766/0509 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 5, 2009
From: MEIJER, HENRICUS JOHANNES MARIA; DYER, JOHN WESLEY
To: MICROSOFT CORPORATION
Reel/Frame 023479/0520 →