Bi-directional asynchronous I/O abstraction based upon pair of tightly coupled reactive streams flows
AssigneeOracle International Corporation
InventorsChris Hegarty, Daniel Jean-Michel Fuchs, Michael Conor McMahon, Pavel Rappo
Life of this patent
Estimating the term…
Abstract
Systems and methods are provided based on tightly coupled RS flows to provide bi-directional asynchronous stream processing with non-blocking back pressure. Signal, data, and error processing may be performed and routing of signals, data, and error information between multiple RS flows may be performed according to detected conditions.
Claims20
A non-transitory computer readable medium comprising instructions which, when executed by one or more hardware processors, causes performance of operations comprising:
- executing, by a first component, a first subscriber of a first uni-directional reactive stream;
- wherein the first uni-directional reactive stream comprises the first subscriber and a first publisher;
- wherein the first uni-directional reactive stream is being used to receive data by the first component from a second component;
- executing, by the first component, a second publisher of a second uni-directional reactive stream;
- wherein the second uni-directional reactive stream comprises the second publisher and a second subscriber;
- wherein the second uni-directional reactive stream is being used to transmit at least (a) non-error data associated with the second uni-directional reactive stream by the first component to the second component and (b) messages associated with the first uni-directional reactive stream;
- receiving, by the first subscriber of the first uni-directional reactive stream from the first publisher of the first uni-directional reactive stream, a first set of subscribed data;
- determining, by the first component, a need to communicate information responsive to a condition of the first uni-directional reactive stream back to the second component even though the first uni-directional reactive stream is directed from the first publisher to the first subscriber;
- responsive to the determining operation:
- publishing, the information corresponding to the condition of the first uni-directional reactive stream, by the second publisher of the second uni-directional reactive stream to the second subscriber of the second uni-directional reactive stream.
A non-transitory computer readable medium comprising instructions which, when executed by one or more hardware processors, causes performance of operations comprising:
- executing, by a first component, a first subscriber of a first uni-directional reactive stream;
- wherein the first uni-directional reactive stream comprises the first subscriber and a first publisher;
- wherein the first uni-directional reactive stream is being used to receive data by the first component from a second component;
- executing, by the first component, a second publisher of a second uni-directional reactive stream;
- wherein the second uni-directional reactive stream comprises the second publisher and a second subscriber;
- wherein the second uni-directional reactive stream is being used to transmit at least (a) non-error data associated with the second uni-directional reactive stream by the first component to the second component and (b) instructions associated with the first uni-directional reactive stream;
- receiving, by the first subscriber of the first uni-directional reactive stream from the first publisher of the first uni-directional reactive stream, a first set of subscribed data;
- and
- prior to publishing, by a third publisher of a third uni-directional reactive stream, the first set of subscribed data:
- publishing, instructions associated with the first set of subscribed data, by the second publisher of the second uni-directional reactive stream to the second subscriber of the second uni-directional reactive stream.
A method of performing bi-directional asynchronous communications based upon a pair of tightly coupled RS flows, comprising:
- executing, by a first component, a first subscriber of a first uni-directional reactive stream;
- wherein the first uni-directional reactive stream comprises the first subscriber and a first publisher;
- wherein the first uni-directional reactive stream is being used to receive data by the first component from a second component;
- executing, by the first component, a second publisher of a second uni-directional reactive stream;
- wherein the second uni-directional reactive stream comprises the second publisher and a second subscriber;
- wherein the second uni-directional reactive stream is being used to transmit at least (a) non-error data associated with the second uni-directional reactive stream by the first component to the second component and (b) messages associated with the first uni-directional reactive stream;
- receiving, by the first subscriber of the first uni-directional reactive stream from the first publisher of the first uni-directional reactive stream, a first set of subscribed data;
- determining, by the first component, a need to communicate information responsive to a condition of the first uni-directional reactive stream back to the second component even though the first uni-directional reactive stream is directed from the first publisher to the first subscriber;
- and
- responsive to the determining operation:
- publishing, the information corresponding to the condition of the first uni-directional reactive stream, by the second publisher of the second uni-directional reactive stream to the second subscriber of the second uni-directional reactive stream;
- wherein the first component and the second component each include computing devices operative to digitally communicate information.
A method of performing bi-directional asynchronous communications based upon a pair of tightly coupled RS flows, comprising:
- executing, by a first component, a first subscriber of a first uni-directional reactive stream;
- wherein the first uni-directional reactive stream comprises the first subscriber and a first publisher;
- wherein the first uni-directional reactive stream is being used to receive data by the first component from a second component;
- executing, by the first component, a second publisher of a second uni-directional reactive stream;
- wherein the second uni-directional reactive stream comprises the second publisher and a second subscriber;
- wherein the second uni-directional reactive stream is being used to transmit at least (a) non-error data associated with the second uni-directional reactive stream by the first component to the second component and (b) instructions associated with the first uni-directional reactive stream;
- receiving, by the first subscriber of the first uni-directional reactive stream from the first publisher of the first uni-directional reactive stream, a first set of subscribed data;
- and
- prior to publishing, by a third publisher of a third uni-directional reactive stream, the first set of subscribed data:
- publishing, instructions associated with the first set of subscribed data, by the second publisher of the second uni-directional reactive stream to the second subscriber of the second uni-directional reactive stream;
- wherein the first component and the second component each include computing devices operative to digitally communicate information.
Dependencies are inferred from the claim text.