Package io.github.simplex.simplexss
Class ServicePool
java.lang.Object
io.github.simplex.simplexss.ServicePool
-
Field Summary
Modifier and TypeFieldDescriptionA collection of services related to this service pool.private static final org.bukkit.NamespacedKey
The defaultNamespacedKey
used to identify unmarked services.private final org.bukkit.NamespacedKey
The key used to identify this service pool.private final reactor.core.scheduler.Scheduler
The scheduler used to run the services in this pool. -
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescription(package private) void
addService
(IService service) (package private) static org.bukkit.NamespacedKey
reactor.core.scheduler.Scheduler
@NotNull reactor.core.publisher.Mono<IService>
getService
(org.bukkit.NamespacedKey service_name) (package private) boolean
isValidService
(IService service) @NotNull reactor.core.publisher.Mono<reactor.core.Disposable>
queueService
(org.bukkit.NamespacedKey service_name) @NotNull reactor.core.publisher.Mono<ServicePool>
recycle()
(package private) void
removeService
(IService service) @NotNull reactor.core.publisher.Flux<reactor.core.Disposable>
@NotNull reactor.core.publisher.Mono<Void>
stopService
(@NotNull org.bukkit.NamespacedKey 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)
-
Field Details
-
associatedServices
A collection of services related to this service pool. -
scheduler
private final reactor.core.scheduler.Scheduler schedulerThe scheduler used to run the services in this pool. -
name
private final org.bukkit.NamespacedKey nameThe key used to identify this service pool. -
DEFAULT
private static final org.bukkit.NamespacedKey DEFAULTThe defaultNamespacedKey
used to identify unmarked services. This will cause errors if left unchecked.
-
-
Constructor Details
-
ServicePool
public ServicePool(org.bukkit.NamespacedKey name, boolean multithreaded) - Parameters:
name
- The name of this service pool.multithreaded
- Whether this service pool should be multithreaded, or operate upon a single thread.
-
-
Method Details
-
getDefaultNamespacedKey
static org.bukkit.NamespacedKey getDefaultNamespacedKey()- Returns:
- The default namespaced key to use if one is not assigned.
-
addService
- Parameters:
service
- Add a service to the pool's service collection.
-
isValidService
- Parameters:
service
- The service to check against this pool.- Returns:
- Whether the service is registered with this pool.
-
getAssociatedServices
-
queueService
@NotNull public @NotNull reactor.core.publisher.Mono<reactor.core.Disposable> queueService(org.bukkit.NamespacedKey service_name) - Parameters:
service_name
- 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<Disposable>)
.
-
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 org.bukkit.NamespacedKey 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
@NotNull public @NotNull reactor.core.publisher.Mono<IService> getService(org.bukkit.NamespacedKey service_name) - Parameters:
service_name
- The name of the service to get.- Returns:
- A
Mono
object which contains the service.
-
removeService
- Parameters:
service
- The service to remove from the pool's service collection.
-
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.
-