Class ServicePool
java.lang.Object
io.github.simplexdevelopment.scheduler.ServicePool
-
Constructor Summary
ConstructorDescriptionServicePool
(String name, boolean multithreaded) This will create a new instance of a Service Pool with aScheduler
as its main scheduler.ServicePool
(String name, org.bukkit.plugin.java.JavaPlugin plugin) This will create a new instance of a Service Pool with theReactorBukkitScheduler
as its main scheduler. -
Method Summary
Modifier and TypeMethodDescriptionreactor.core.scheduler.Scheduler
@NotNull reactor.core.publisher.Mono<IService>
getService
(String service_name) @NotNull reactor.core.publisher.Mono<reactor.core.Disposable>
queueService
(IService service) @NotNull reactor.core.publisher.Mono<ServicePool>
recycle()
@NotNull reactor.core.publisher.Flux<reactor.core.Disposable>
@NotNull reactor.core.publisher.Mono<Void>
stopService
(@NotNull String service_name, @Nullable reactor.core.publisher.Mono<reactor.core.Disposable> disposable) @NotNull reactor.core.publisher.Mono<Void>
stopServices
(@NotNull reactor.core.publisher.Flux<reactor.core.Disposable> disposableThread)
-
Constructor Details
-
ServicePool
This will create a new instance of a Service Pool with aScheduler
as its main scheduler. This should be used if you'd like to execute tasks without communicating on the main server thread.- Parameters:
name
- The name of this service pool.multithreaded
- Whether this service pool should be multithreaded, or operate upon a single thread.
-
ServicePool
This will create a new instance of a Service Pool with theReactorBukkitScheduler
as its main scheduler. This should be used if you'd like to execute tasks while communicating on the main server thread.- Parameters:
name
- The name of this service pool.
-
-
Method Details
-
getAssociatedServices
-
queueService
@NotNull public @NotNull reactor.core.publisher.Mono<reactor.core.Disposable> queueService(IService service) - Parameters:
service
- The name of the service to queue. This should be a service that is located within this service pool. If you name a service that is stored within another service pool, this method will throw an error.- Returns:
- A
Mono
object which contains aDisposable
element which can be used to destroy the registered service.
-
startServices
@NotNull public @NotNull reactor.core.publisher.Flux<reactor.core.Disposable> startServices()- Returns:
- A
Flux
object which contains a collection ofDisposable
elements, which can be used to destroy the registered services usingstopServices(Flux)
.
-
stopServices
@NotNull public @NotNull reactor.core.publisher.Mono<Void> stopServices(@NotNull @NotNull reactor.core.publisher.Flux<reactor.core.Disposable> disposableThread) - Parameters:
disposableThread
- Areactor.core.publisher.Flux<reactor.core.Disposable>
which contains all the services that should be disposed..- Returns:
- A
reactor.core.publisher.Mono<Void>
object which can be used to stop the services.
-
stopService
@NotNull public @NotNull reactor.core.publisher.Mono<Void> stopService(@NotNull @NotNull String service_name, @Nullable @Nullable reactor.core.publisher.Mono<reactor.core.Disposable> disposable) - Parameters:
service_name
- The name of the service to stop.disposable
- ADisposable
object which contains the service that should be disposed.- Returns:
- A
reactor.core.publisher.Mono<Void>
object which can be used to stop the service.
-
getService
- Parameters:
service_name
- The name of the service to get.- Returns:
- A
Mono
object which contains the service.
-
recycle
- Returns:
- This service pool after being cleared of all services. You will need to register services with this pool again before using it.
-
getScheduler
@Contract(pure=true) public reactor.core.scheduler.Scheduler getScheduler()- Returns:
- The
Scheduler
which hosts the threads for the service pool.
-