You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+4-4
Original file line number
Diff line number
Diff line change
@@ -102,15 +102,15 @@ public interface Publisher<T> {
102
102
|<a name="1.4">4</a>|If a `Publisher` fails it MUST signal an `onError`.|
103
103
| [:bulb:](#1.4"1.4 explained") |*The intent of this rule is to make it clear that a Publisher is responsible for notifying its Subscribersif it detects that it cannot proceed—Subscribers must be given a chance to clean up resources or otherwise deal with the Publisher´s failures.*|
104
104
|<a name="1.5">5</a>|If a `Publisher` terminates successfully (finite stream) it MUST signal an `onComplete`.|
105
-
| [:bulb:](#1.5"1.5 explained") |*The intent of this rule is to make it clear that a Publisher is responsible for notifying its Subscribers that it has reached a [terminal state](#term_terminal-state)—Subscribers can then act on this information; clean up resources, etc.*|
105
+
| [:bulb:](#1.5"1.5 explained") |*The intent of this rule is to make it clear that a Publisher is responsible for notifying its Subscribers that it has reached a [terminal state](#term_terminal_state)—Subscribers can then act on this information; clean up resources, etc.*|
106
106
|<a name="1.6">6</a>|If a `Publisher` signals either `onError` or `onComplete` on a `Subscriber`, that `Subscriber`’s `Subscription` MUST be considered cancelled. |
107
107
| [:bulb:](#1.6"1.6 explained") |*The intent of this rule is to make sure that a Subscription is treated the same no matter if it was cancelled, the Publisher signalled onError or onComplete.*|
108
-
|<a name="1.7">7</a>|Once a [terminal state](#term_terminal-state) has been signaled (`onError`, `onComplete`) it is REQUIRED that no further signals occur. |
108
+
|<a name="1.7">7</a>|Once a [terminal state](#term_terminal_state) has been signaled (`onError`, `onComplete`) it is REQUIRED that no further signals occur. |
109
109
| [:bulb:](#1.7"1.7 explained") |*The intent of this rule is to make sure that onError and onComplete are the final states of an interaction between a Publisher and Subscriber pair.*|
110
110
|<a name="1.8">8</a>|If a `Subscription` is cancelled its `Subscriber` MUST eventually stop being signaled. |
111
111
| [:bulb:](#1.8"1.8 explained") |*The intent of this rule is to make sure that Publishers respect a Subscriber’s request to cancel a Subscription when Subscription.cancel() has been called. The reason for*eventually* is because signals can have propagation delay due to being asynchronous.*|
112
112
|<a name="1.9">9</a>| `Publisher.subscribe` MUST call `onSubscribe` on the provided `Subscriber` prior to any other signals to that `Subscriber` and MUST [return normally](#term_return_normally), except when the provided `Subscriber` is `null` in which case it MUSTthrow a `java.lang.NullPointerException` to the caller, for all other situations the only legal way to signal failure (or reject the `Subscriber`) is by calling `onError` (after calling `onSubscribe`).|
113
-
| [:bulb:](#1.9"1.9 explained") |*The intent of this rule is to make sure that `onSubscribe` is always signalled before any of the other signals, so that initialization logic can be executed by the Subscriber when the signal is received. Also `onSubscribe` MUST only be called at most once, [see [2.12](#2.12)].If the supplied `Subscriber` is `null`, there is nowhere else to signal this but to the caller, which means a `java.lang.NullPointerException` must be thrown. Examples of possible situations:A stateful Publisher can be overwhelmed, bounded by a finite number of underlying resources, exhausted, or in a [terminal state](#term_terminal-state).*|
113
+
| [:bulb:](#1.9"1.9 explained") |*The intent of this rule is to make sure that `onSubscribe` is always signalled before any of the other signals, so that initialization logic can be executed by the Subscriber when the signal is received. Also `onSubscribe` MUST only be called at most once, [see [2.12](#2.12)].If the supplied `Subscriber` is `null`, there is nowhere else to signal this but to the caller, which means a `java.lang.NullPointerException` must be thrown. Examples of possible situations:A stateful Publisher can be overwhelmed, bounded by a finite number of underlying resources, exhausted, or in a [terminal state](#term_terminal_state).*|
114
114
|<a name="1.10">10</a>| `Publisher.subscribe` MAY be called as many times as wanted but MUST be with a different `Subscriber` each time [see [2.12](#2.12)].|
115
115
| [:bulb:](#1.10"1.10 explained") |*The intent of this rule is to have callers of `subscribe` be aware that a generic Publisher and a generic Subscriber cannot be assumed to support being attached multiple times. Furthermore, it also mandates that the semantics of `subscribe` must be upheld no matter how many times it is called.*|
116
116
|<a name="1.11">11</a>|A `Publisher` MAY support multiple `Subscriber`s and decides whether each `Subscription` is unicast or multicast. |
@@ -136,7 +136,7 @@ public interface Subscriber<T> {
136
136
|<a name="2.3">3</a>| `Subscriber.onComplete()` and `Subscriber.onError(Throwable t)` MUSTNOT call any methods on the `Subscription` or the `Publisher`.|
137
137
| [:bulb:](#2.3"2.3 explained") |*The intent of this rule is to prevent cycles and race-conditions—between Publisher, Subscription and Subscriber—during the processing of completion signals.*|
138
138
|<a name="2.4">4</a>| `Subscriber.onComplete()` and `Subscriber.onError(Throwable t)` MUST consider the Subscription cancelled after having received the signal. |
139
-
| [:bulb:](#2.4"2.4 explained") |*The intent of this rule is to make sure that Subscribers respect a Publisher’s [terminal state](#term_terminal-state) signals. ASubscription is simply not valid anymore after an onComplete or onError signal has been received.*|
139
+
| [:bulb:](#2.4"2.4 explained") |*The intent of this rule is to make sure that Subscribers respect a Publisher’s [terminal state](#term_terminal_state) signals. ASubscription is simply not valid anymore after an onComplete or onError signal has been received.*|
140
140
|<a name="2.5">5</a>|A `Subscriber` MUST call `Subscription.cancel()` on the given `Subscription` after an `onSubscribe` signal if it already has an active `Subscription`.|
141
141
| [:bulb:](#2.5"2.5 explained") |*The intent of this rule is to prevent that two, or more, separate Publishers from thinking that they can interact with the same Subscriber. Enforcingthis rule means that resource leaks are prevented since extra Subscriptions will be cancelled.*|
142
142
|<a name="2.6">6</a>|A `Subscriber` MUST call `Subscription.cancel()` if the `Subscription` is no longer needed. |
0 commit comments