Interface Processor<I,O>
-
- Type Parameters:
I
- the type observedO
- the type produced
- All Superinterfaces:
Publisher<O>
,Subscriber<I>
- All Known Subinterfaces:
Processor.Iso<V>
,Processor.Transactional<I,O>
,Processor.TransactionalIso<V>
public interface Processor<I,O> extends Publisher<O>, Subscriber<I>
A combination of anPublisher
andSubscriber
.Processors are expected to broadcast their submitted values to any registered observers, though filtering or other transformations may be applied.
Submitting a completion event to the processor will result in a completion event being passed to every subscriber, and the rejection of further events being submitted.
- Since:
- 4.0.0
-
-
Nested Class Summary
Nested Classes Modifier and Type Interface Description static interface
Processor.Iso<V>
A Processor that has the same type for inputs and outputs.static interface
Processor.Transactional<I,O>
A processor that supports transactions.static interface
Processor.TransactionalIso<V>
A processor that supports transactions using the same input and outputs.-
Nested classes/interfaces inherited from interface org.spongepowered.configurate.reactive.Publisher
Publisher.Cached<V>
-
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Default Methods Modifier and Type Method Description boolean
closeIfUnsubscribed()
Close this processor if there are no remaining subscriptions.static <V> Processor.Iso<V>
create()
Create aProcessor
instance that simply broadcasts submitted values to its subscribers.static <V> Processor.Iso<V>
create(java.util.concurrent.Executor executor)
Create aProcessor
instance that simply broadcasts submitted values to its subscribers.static <V> Processor.TransactionalIso<V>
createTransactional()
Create a processor instance that is aware of transactions.static <V> Processor.TransactionalIso<V>
createTransactional(java.util.concurrent.Executor exec)
Create a processor instance that is aware of transactions.void
fallbackHandler(@Nullable Subscriber<O> subscriber)
Provide aSubscriber
that will handle events submitted to this processor, but only if no other subscription is active.void
inject(O element)
Submit an element of the observed type, bypassing any mapping this Processor may do.default <R> Processor<O,R>
map(CheckedFunction<? super O,? extends R,TransactionFailedException> mapper)
Create a new publisher that will transform events published.-
Methods inherited from interface org.spongepowered.configurate.reactive.Publisher
cache, cache, executor, hasSubscribers, subscribe
-
Methods inherited from interface org.spongepowered.configurate.reactive.Subscriber
onClose, onError, submit
-
-
-
-
Method Detail
-
create
static <V> Processor.Iso<V> create()
Create aProcessor
instance that simply broadcasts submitted values to its subscribers. Broadcasts will occur on the commonForkJoinPool
.- Type Parameters:
V
- the type- Returns:
- a new processor instance
- Since:
- 4.0.0
-
create
static <V> Processor.Iso<V> create(java.util.concurrent.Executor executor)
Create aProcessor
instance that simply broadcasts submitted values to its subscribers.- Type Parameters:
V
- the type- Parameters:
executor
- task executor- Returns:
- a new processor instance
- Since:
- 4.0.0
-
createTransactional
static <V> Processor.TransactionalIso<V> createTransactional()
Create a processor instance that is aware of transactions.- Type Parameters:
V
- the value type- Returns:
- a new transactional processor
- Since:
- 4.0.0
-
createTransactional
static <V> Processor.TransactionalIso<V> createTransactional(java.util.concurrent.Executor exec)
Create a processor instance that is aware of transactions.Operations will be submitted to the provided executor.
- Type Parameters:
V
- the value type- Parameters:
exec
- executor to run operations on- Returns:
- a new transactional processor
- Since:
- 4.0.0
-
map
default <R> Processor<O,R> map(CheckedFunction<? super O,? extends R,TransactionFailedException> mapper)
Create a new publisher that will transform events published.
-
inject
void inject(O element)
Submit an element of the observed type, bypassing any mapping this Processor may do. If the input type of this processor equals the output type, this is equivalent toSubscriber.submit(Object)
- Parameters:
element
- the element to submit- Since:
- 4.0.0
-
fallbackHandler
void fallbackHandler(@Nullable Subscriber<O> subscriber)
Provide aSubscriber
that will handle events submitted to this processor, but only if no other subscription is active.- Parameters:
subscriber
- the fallback subscriber to add. Providenull
to remove the handler- Since:
- 4.0.0
-
closeIfUnsubscribed
boolean closeIfUnsubscribed()
Close this processor if there are no remaining subscriptions. Any signals that have already been submitted will be processed.Any call to this method after the
Processor
has been closed will simply return true.- Returns:
- true if there are no subscribers and this processor is closed
- Since:
- 4.0.0
-
-