mirror of
https://github.com/SimplexDevelopment/SimplexSS.git
synced 2024-11-14 22:03:31 +00:00
Merge branch 'main' of https://github.com/SimplexDevelopment/SimplexSS
This commit is contained in:
commit
116fbe5847
76
.github/workflows/codeql.yml
vendored
Normal file
76
.github/workflows/codeql.yml
vendored
Normal file
@ -0,0 +1,76 @@
|
|||||||
|
# For most projects, this workflow file will not need changing; you simply need
|
||||||
|
# to commit it to your repository.
|
||||||
|
#
|
||||||
|
# You may wish to alter this file to override the set of languages analyzed,
|
||||||
|
# or to provide custom queries or build logic.
|
||||||
|
#
|
||||||
|
# ******** NOTE ********
|
||||||
|
# We have attempted to detect the languages in your repository. Please check
|
||||||
|
# the `language` matrix defined below to confirm you have the correct set of
|
||||||
|
# supported CodeQL languages.
|
||||||
|
#
|
||||||
|
name: "CodeQL"
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [ "main" ]
|
||||||
|
pull_request:
|
||||||
|
# The branches below must be a subset of the branches above
|
||||||
|
branches: [ "main" ]
|
||||||
|
schedule:
|
||||||
|
- cron: '21 13 * * 0'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
analyze:
|
||||||
|
name: Analyze
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
permissions:
|
||||||
|
actions: read
|
||||||
|
contents: read
|
||||||
|
security-events: write
|
||||||
|
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
language: [ 'java' ]
|
||||||
|
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ]
|
||||||
|
# Use only 'java' to analyze code written in Java, Kotlin or both
|
||||||
|
# Use only 'javascript' to analyze code written in JavaScript, TypeScript or both
|
||||||
|
# Learn more about CodeQL language support at https://aka.ms/codeql-docs/language-support
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout repository
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
|
# Initializes the CodeQL tools for scanning.
|
||||||
|
- name: Initialize CodeQL
|
||||||
|
uses: github/codeql-action/init@v2
|
||||||
|
with:
|
||||||
|
languages: ${{ matrix.language }}
|
||||||
|
# If you wish to specify custom queries, you can do so here or in a config file.
|
||||||
|
# By default, queries listed here will override any specified in a config file.
|
||||||
|
# Prefix the list here with "+" to use these queries and those in the config file.
|
||||||
|
|
||||||
|
# Details on CodeQL's query packs refer to : https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs
|
||||||
|
# queries: security-extended,security-and-quality
|
||||||
|
|
||||||
|
|
||||||
|
# Autobuild attempts to build any compiled languages (C/C++, C#, Go, or Java).
|
||||||
|
# If this step fails, then you should remove it and run the build manually (see below)
|
||||||
|
- name: Autobuild
|
||||||
|
uses: github/codeql-action/autobuild@v2
|
||||||
|
|
||||||
|
# ℹ️ Command-line programs to run using the OS shell.
|
||||||
|
# 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun
|
||||||
|
|
||||||
|
# If the Autobuild fails above, remove it and uncomment the following three lines.
|
||||||
|
# modify them (or add more) to build your code if your project, please refer to the EXAMPLE below for guidance.
|
||||||
|
|
||||||
|
# - run: |
|
||||||
|
# echo "Run, Build Application using script"
|
||||||
|
# ./location_of_script_within_repo/buildscript.sh
|
||||||
|
|
||||||
|
- name: Perform CodeQL Analysis
|
||||||
|
uses: github/codeql-action/analyze@v2
|
||||||
|
with:
|
||||||
|
category: "/language:${{matrix.language}}"
|
34
.github/workflows/gradle.yml
vendored
Normal file
34
.github/workflows/gradle.yml
vendored
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
# This workflow uses actions that are not certified by GitHub.
|
||||||
|
# They are provided by a third-party and are governed by
|
||||||
|
# separate terms of service, privacy policy, and support
|
||||||
|
# documentation.
|
||||||
|
# This workflow will build a Java project with Gradle and cache/restore any dependencies to improve the workflow execution time
|
||||||
|
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-java-with-gradle
|
||||||
|
|
||||||
|
name: Java CI with Gradle
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [ "main" ]
|
||||||
|
pull_request:
|
||||||
|
branches: [ "main" ]
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
- name: Set up JDK 17
|
||||||
|
uses: actions/setup-java@v3
|
||||||
|
with:
|
||||||
|
java-version: '17'
|
||||||
|
distribution: 'temurin'
|
||||||
|
- name: Build with Gradle
|
||||||
|
uses: gradle/gradle-build-action@67421db6bd0bf253fb4bd25b31ebb98943c375e1
|
||||||
|
with:
|
||||||
|
arguments: build
|
128
README.md
128
README.md
@ -1,2 +1,130 @@
|
|||||||
# SimplexSS
|
# SimplexSS
|
||||||
|
|
||||||
|
![](https://img.shields.io/github/license/SimplexDevelopment/SimplexSS)
|
||||||
|
![](https://img.shields.io/github/languages/top/SimplexDevelopment/SimplexSS)
|
||||||
|
![](https://img.shields.io/github/workflow/status/SimplexDevelopment/SimplexSS/CodeQL/main)
|
||||||
|
![](https://img.shields.io/github/v/release/SimplexDevelopment/SimplexSS?include_prereleases)
|
||||||
|
![](https://jitpack.io/v/SimplexDevelopment/SimplexSS.svg)
|
||||||
|
![](https://img.shields.io/github/issues/SimplexDevelopment/SimplexSS)
|
||||||
|
![](https://img.shields.io/github/stars/SimplexDevelopment/SimplexSS?style=social)
|
||||||
|
![](https://img.shields.io/github/forks/SimplexDevelopment/SimplexSS?style=social)
|
||||||
|
|
||||||
A reactive non blocking api for scheduling runnable tasks (called services)
|
A reactive non blocking api for scheduling runnable tasks (called services)
|
||||||
|
|
||||||
|
# Adding SimplexSS to your project
|
||||||
|
|
||||||
|
In order to use SimplexSS in your project, you need to add the jitpack repository to your build.gradle or pom.xml file.
|
||||||
|
|
||||||
|
Here's an example, in Gradle:
|
||||||
|
|
||||||
|
```gradle
|
||||||
|
repositories {
|
||||||
|
maven {
|
||||||
|
id 'jitpack'
|
||||||
|
url 'https://jitpack.io'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Then, you can add the dependency.
|
||||||
|
|
||||||
|
The `groupId` is `com.github.SimplexDevelopment`
|
||||||
|
|
||||||
|
The `artifactId` is `SimplexSS`
|
||||||
|
|
||||||
|
The `version` is `1.0.1-SNAPSHOT`
|
||||||
|
|
||||||
|
It is recommended you use either the Maven Shade Plugin,
|
||||||
|
|
||||||
|
```maven
|
||||||
|
<build>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-jar-plugin</artifactId>
|
||||||
|
...
|
||||||
|
<configuration>
|
||||||
|
<archive>
|
||||||
|
<manifest>
|
||||||
|
<addClasspath>true</addClasspath>
|
||||||
|
<mainClass>path.to.MainClass</mainClass>
|
||||||
|
</manifest>
|
||||||
|
</archive>
|
||||||
|
</configuration>
|
||||||
|
...
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
```
|
||||||
|
|
||||||
|
or the Gradle Shadow Plugin (com.github.johnrengelman.shadow).
|
||||||
|
|
||||||
|
```gradle
|
||||||
|
plugins {
|
||||||
|
id 'com.github.johnrengelman.shadow' version '7.1.2'
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Here is an example of the dependency, in Gradle:
|
||||||
|
|
||||||
|
```gradle
|
||||||
|
dependencies {
|
||||||
|
shadow 'com.github.SimplexDevelopment:SimplexSS:1.0.1-SNAPSHOT'
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
# Using SimplexSS
|
||||||
|
|
||||||
|
To use Simplex Scheduling System, the first thing you need to do is initialize a new instance of the Scheduling System.
|
||||||
|
|
||||||
|
```Java
|
||||||
|
private SchedulingSystem<YourPlugin> scheduler;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onEnable() {
|
||||||
|
this.scheduler = new SchedulingSystem<>(this);
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Then, you should use the Service Manager to create some new service pools. You can use `ServicePool#emptyBukkitServicePool(String, JavaPlugin)` for a service pool which will operate on the main server thread, or you can use `ServicePool#emptyServicePool(String, boolean)` for a completely separate, non-blocking scheduler which can be either singular or multithreaded. You should also use the service manager stream to register your services, and assign a Flux<Disposable> object so we can cancel the services later on in `JavaPlugin#onDisable()`.
|
||||||
|
|
||||||
|
```Java
|
||||||
|
private Flux<Disposable> disposables;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onEnable() {
|
||||||
|
this.scheduler = new SchedulingSystem<>(this);
|
||||||
|
|
||||||
|
YourFirstService firstService;
|
||||||
|
YourSecondService secondService;
|
||||||
|
YourThirdService thirdService;
|
||||||
|
|
||||||
|
scheduler.getServiceManager().subscribe(manager -> {
|
||||||
|
manager.emptyBukkitServicePool("pool_name", this).subscribe(pool -> {
|
||||||
|
Set<Disposable> dispos = new HashSet<>();
|
||||||
|
|
||||||
|
firstService = new YourFirstService(pool, "first_service_name");
|
||||||
|
secondService = new YourSecondService(pool, "second_service_name", 20 * 60L);
|
||||||
|
thirdService = new YourThirdService(pool, "third_service_name", 20 * 60L, 20 * 60 * 10L, true, false);
|
||||||
|
|
||||||
|
scheduler.queue(firstService).subscribe(dispos::add);
|
||||||
|
scheduler.queue(secondService).subscribe(dispos::add);
|
||||||
|
scheduler.queue(thirdService).subscribe(dispos::add);
|
||||||
|
|
||||||
|
disposables = Flux.fromIterable(dispos);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
You can then stop, cancel, and/or dispose of the tasks in your `JavaPlugin#onDisable()` method by calling:
|
||||||
|
```Java
|
||||||
|
@Override
|
||||||
|
public void onDisable() {
|
||||||
|
scheduler.getServiceManager().subscribe(manager -> {
|
||||||
|
manager.getServicePools().doOnEach(signal -> Objects.requireNonNull(signal.get())
|
||||||
|
.stopServices(disposables)
|
||||||
|
.subscribe());
|
||||||
|
});
|
||||||
|
}
|
||||||
|
```
|
||||||
|
Loading…
Reference in New Issue
Block a user