Class ServicePool

java.lang.Object
io.github.simplexdevelopment.scheduler.ServicePool

public final class ServicePool extends Object
  • Field Details

    • DEFAULT

      private static final String DEFAULT
      The default String used to identify unmarked services. This will cause errors if left unchecked.
      See Also:
    • associatedServices

      private final Set<IService> associatedServices
      A collection of services related to this service pool.
    • scheduler

      private final reactor.core.scheduler.Scheduler scheduler
      The scheduler used to run the services in this pool.
    • name

      private final String name
      The name used to identify this service pool.
  • Constructor Details

    • ServicePool

      public ServicePool(String name, boolean multithreaded)
      This will create a new instance of a Service Pool with a Scheduler 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

      public ServicePool(String name, org.bukkit.plugin.java.JavaPlugin plugin)
      This will create a new instance of a Service Pool with the ReactorBukkitScheduler 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

    • getDefaultNamespacedKey

      static String getDefaultNamespacedKey()
      Returns:
      The default namespaced key to use if one is not assigned.
    • addService

      void addService(IService service)
      Parameters:
      service - Add a service to the pool's service collection.
    • isValidService

      boolean isValidService(IService service)
      Parameters:
      service - The service to check against this pool.
      Returns:
      Whether the service is registered with this pool.
    • getAssociatedServices

      @Contract(pure=true) @NotNull public @NotNull Set<IService> getAssociatedServices()
      Returns:
      A Set of IService objects which are registered with this pool.
    • 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 a Disposable 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 of Disposable elements, which can be used to destroy the registered services using stopServices(Flux).
    • stopServices

      @NotNull public @NotNull reactor.core.publisher.Mono<Void> stopServices(@NotNull @NotNull reactor.core.publisher.Flux<reactor.core.Disposable> disposableThread)
      Parameters:
      disposableThread - A reactor.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 - A Disposable 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(String service_name)
      Parameters:
      service_name - The name of the service to get.
      Returns:
      A Mono object which contains the service.
    • removeService

      void removeService(IService service)
      Parameters:
      service - The service to remove from the pool's service collection.
    • recycle

      @NotNull public @NotNull reactor.core.publisher.Mono<ServicePool> 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.