@SPI public abstract class Subscriber extends AbstractChannel
There can be many subscribers per message type.
Modifier | Constructor and Description |
---|---|
protected |
Subscriber(io.spine.server.transport.ChannelId id) |
Modifier and Type | Method and Description |
---|---|
void |
addObserver(io.grpc.stub.StreamObserver<io.spine.server.integration.ExternalMessage> observer)
Adds an observer to receive the subscription updates.
|
protected void |
callObservers(io.spine.server.integration.ExternalMessage message) |
void |
close() |
boolean |
isStale()
Allows to understand whether this channel is stale and can be closed.
|
java.lang.Iterable<io.grpc.stub.StreamObserver<io.spine.server.integration.ExternalMessage>> |
observers()
Obtains current observers registered in this instance of
Subscriber
which receive the subscription updates. |
void |
onMessage(io.spine.server.integration.ExternalMessage message)
Passes the given message to observers.
|
void |
removeObserver(io.grpc.stub.StreamObserver<io.spine.server.integration.ExternalMessage> observer)
Removes an existing observer and disconnects it from this subscription channel.
|
id
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
channelIdFor, targetType
public java.lang.Iterable<io.grpc.stub.StreamObserver<io.spine.server.integration.ExternalMessage>> observers()
Subscriber
which receive the subscription updates.public void addObserver(io.grpc.stub.StreamObserver<io.spine.server.integration.ExternalMessage> observer)
observer
- the observer to registerpublic void removeObserver(io.grpc.stub.StreamObserver<io.spine.server.integration.ExternalMessage> observer)
If the given observer is not registered at the moment, does nothing.
observer
- the observer to removepublic boolean isStale()
MessageChannel
true
if the channel is stale, false
otherwisepublic void onMessage(io.spine.server.integration.ExternalMessage message)
message
- the subscription update to pass to the observers for this channelprotected final void callObservers(io.spine.server.integration.ExternalMessage message)
public void close()