public class OptimizationEvents extends Object
ReplaySubject
and a CompletableFuture
. OptimizationEvents can
be used to subscribe to different events of the optimization.
Subscriptions have to be done before get()
is called on the CompletableFuture
returned by IOptimization.startRunSync(long, TimeUnit)
.
The following example shows how to subscribe to different evens and how to print the results:
// Use asynch run here - this is an optimization instance
CompletableFuture<IOptimizationResult> resultFuture = this.startRunAsync();
// Subscribe to events
this.getOptimizationEvents()
.progress
.subscribe(
p -> {
System.out.println(p.getProgressString());
});
this.getOptimizationEvents()
.error
.subscribe(
e -> {
System.out.println(e.getCause() + " " + e.getCode());
});
this.getOptimizationEvents()
.status
.subscribe(
s -> {
System.out.println(s.getDescription() + " " + s.getCode());
});
// Get result - This blocks the execution for statements after the get() call
IOptimizationResult result = resultFuture.get();
System.out.println(result);
Modifier and Type | Class and Description |
---|---|
static class |
OptimizationEvents.AssertionResult |
Modifier and Type | Field and Description |
---|---|
io.reactivex.rxjava3.subjects.ReplaySubject<IOptimizationResult> |
afterNodeFilteringResult
The requestedresult ReplaySubject.
|
io.reactivex.rxjava3.subjects.ReplaySubject<IOptimizationResult> |
beforeNodeFilteringResult
The requestedresult ReplaySubject.
|
io.reactivex.rxjava3.subjects.ReplaySubject<IErrorEvent> |
error
The error ReplaySubject.
|
io.reactivex.rxjava3.subjects.ReplaySubject<NodeFilteringEvent> |
nodeFiltering
The node filtering ReplaySubject.
|
io.reactivex.rxjava3.subjects.ReplaySubject<IOptimizationProgress> |
progress
The progress ReplaySubject.
|
io.reactivex.rxjava3.subjects.ReplaySubject<String> |
requestCodeExecutionDone |
io.reactivex.rxjava3.subjects.ReplaySubject<IOptimizationResult> |
requestedresult
The requestedresult ReplaySubject.
|
CompletableFuture<IOptimizationResult> |
result
The result CompletableFuture.
|
io.reactivex.rxjava3.subjects.ReplaySubject<IStatusEvent> |
status
The status ReplaySubject.
|
io.reactivex.rxjava3.subjects.ReplaySubject<IWarningEvent> |
warning
The warning ReplaySubject.
|
Constructor and Description |
---|
OptimizationEvents()
Instantiates new optimization
events , by completing all these event
subscriptions . |
Modifier and Type | Method and Description |
---|---|
io.reactivex.rxjava3.subjects.ReplaySubject<IOptimizationResult> |
afterNodeFilteringResultSubject()
After node filtering result subject.
|
io.reactivex.rxjava3.subjects.ReplaySubject<IOptimizationResult> |
beforeNodeFilteringResultSubject()
Before node filtering result subject.
|
void |
completeExternalEvents()
Complete external like events like
Injection andTestInjection . |
static <T> io.reactivex.rxjava3.subjects.ReplaySubject<T> |
createBoundSubject(io.reactivex.rxjava3.subjects.ReplaySubject<T> subject,
Predicate<T> boundingPredicate) |
static <T> io.reactivex.rxjava3.subjects.ReplaySubject<T> |
createBoundSubject(io.reactivex.rxjava3.subjects.ReplaySubject<T> subject,
Predicate<T> boundingPredicate,
int maxSize)
Checks the
subject pushes against the boundingPredicate and returns those
subjects that do not conform with it. |
io.reactivex.rxjava3.subjects.ReplaySubject<IErrorEvent> |
errorSubject()
Gets the
Error ReplaySubject which can be used to subscribe to any upcoming
Errors . |
io.reactivex.rxjava3.subjects.ReplaySubject<NodeFilteringEvent> |
nodeFilteringSubject()
Gets the
ReplaySubject of filtered Nodes . |
io.reactivex.rxjava3.subjects.ReplaySubject<IOptimizationProgress> |
progressSubject()
Gets the
ReplaySubject which can be used to subscribe to the progress |
io.reactivex.rxjava3.subjects.ReplaySubject<String> |
requestCodeExecutionDoneSubject() |
io.reactivex.rxjava3.subjects.ReplaySubject<IOptimizationResult> |
requestedResultSubject()
Gets the
ReplaySubject which can be used to subscribe to the results. |
CompletableFuture<IOptimizationResult> |
resultFuture()
Gets
CompletableFuture of the result. |
io.reactivex.rxjava3.subjects.ReplaySubject<IStatusEvent> |
statusSubject()
|
static <T> io.reactivex.rxjava3.observers.TestObserver<OptimizationEvents.AssertionResult> |
subscribeSubjectWithTestObserver(io.reactivex.rxjava3.subjects.ReplaySubject<T> subject,
io.reactivex.rxjava3.functions.Function<T,OptimizationEvents.AssertionResult> assertResultMapper) |
io.reactivex.rxjava3.subjects.ReplaySubject<IWarningEvent> |
warningSubject()
Gets the
Warnings ReplaySubject which can be used to subscribe to any upcoming
Warnings |
public final CompletableFuture<IOptimizationResult> result
public final io.reactivex.rxjava3.subjects.ReplaySubject<IOptimizationResult> requestedresult
public final io.reactivex.rxjava3.subjects.ReplaySubject<IOptimizationResult> beforeNodeFilteringResult
public final io.reactivex.rxjava3.subjects.ReplaySubject<IOptimizationResult> afterNodeFilteringResult
public final io.reactivex.rxjava3.subjects.ReplaySubject<IOptimizationProgress> progress
public final io.reactivex.rxjava3.subjects.ReplaySubject<IErrorEvent> error
public final io.reactivex.rxjava3.subjects.ReplaySubject<IWarningEvent> warning
public final io.reactivex.rxjava3.subjects.ReplaySubject<IStatusEvent> status
public final io.reactivex.rxjava3.subjects.ReplaySubject<NodeFilteringEvent> nodeFiltering
public final io.reactivex.rxjava3.subjects.ReplaySubject<String> requestCodeExecutionDone
public OptimizationEvents()
events
, by completing all these event
subscriptions
.public void completeExternalEvents()
Injection
andTestInjection
.public CompletableFuture<IOptimizationResult> resultFuture()
CompletableFuture
of the result.
Please refer to OptimizationEvents
for an implementation example.
result
as soon as the Optimization
is finishedpublic io.reactivex.rxjava3.subjects.ReplaySubject<IOptimizationResult> requestedResultSubject()
ReplaySubject
which can be used to subscribe to the results.results
so far as the Optimization
is still runningpublic io.reactivex.rxjava3.subjects.ReplaySubject<IOptimizationResult> beforeNodeFilteringResultSubject()
public io.reactivex.rxjava3.subjects.ReplaySubject<IOptimizationResult> afterNodeFilteringResultSubject()
public io.reactivex.rxjava3.subjects.ReplaySubject<IOptimizationProgress> progressSubject()
ReplaySubject
which can be used to subscribe to the progressProgress
during the running Optimization
public io.reactivex.rxjava3.subjects.ReplaySubject<IErrorEvent> errorSubject()
Error
ReplaySubject
which can be used to subscribe to any upcoming
Errors
.Errors
during the running Optimization
public io.reactivex.rxjava3.subjects.ReplaySubject<IWarningEvent> warningSubject()
Warnings
ReplaySubject
which can be used to subscribe to any upcoming
Warnings
Warnings
public io.reactivex.rxjava3.subjects.ReplaySubject<IStatusEvent> statusSubject()
status
of the Optimization
public io.reactivex.rxjava3.subjects.ReplaySubject<NodeFilteringEvent> nodeFilteringSubject()
ReplaySubject
of filtered Nodes
.Nodes
public io.reactivex.rxjava3.subjects.ReplaySubject<String> requestCodeExecutionDoneSubject()
public static <T> io.reactivex.rxjava3.subjects.ReplaySubject<T> createBoundSubject(io.reactivex.rxjava3.subjects.ReplaySubject<T> subject, Predicate<T> boundingPredicate, int maxSize)
subject
pushes against the boundingPredicate
and returns those
subjects that do not conform with it.T
- variable dependent on the subject
to testsubject
- the replaySubject of the subject
to testboundingPredicate
- the predicate to which the subject
is testedmaxSize
- the maximum number of buffered itemssubjects
not conforming with the boundingPredicate
public static <T> io.reactivex.rxjava3.subjects.ReplaySubject<T> createBoundSubject(io.reactivex.rxjava3.subjects.ReplaySubject<T> subject, Predicate<T> boundingPredicate)
public static <T> io.reactivex.rxjava3.observers.TestObserver<OptimizationEvents.AssertionResult> subscribeSubjectWithTestObserver(io.reactivex.rxjava3.subjects.ReplaySubject<T> subject, io.reactivex.rxjava3.functions.Function<T,OptimizationEvents.AssertionResult> assertResultMapper)
Copyright © 2017–2023 DNA Evolutions GmbH. All rights reserved.