Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Initial commit of bPermissions Sponge
Not ready for any sort of use yet
  • Loading branch information
rymate1234 committed Mar 13, 2016
1 parent 2e9e284 commit afb794a
Show file tree
Hide file tree
Showing 11 changed files with 322 additions and 186 deletions.
4 changes: 2 additions & 2 deletions bukkit/build.gradle
Expand Up @@ -24,12 +24,12 @@ repositories {
}

dependencies {
compile project(":core")
compile project(":bPermissions-API")
compile group: 'org.bukkit', name: 'bukkit', version: '1.9-SNAPSHOT'
}

shadowJar {
dependencies {
include(dependency(':core'))
include(dependency(':bPermissions-API'))
}
}
@@ -1,8 +1,8 @@
package de.bananaco.bpermissions.imp;

import de.bananaco.bpermissions.api.*;
import de.bananaco.bpermissions.imp.loadmanager.MainThread;
import de.bananaco.bpermissions.imp.loadmanager.TaskRunnable;
import de.bananaco.bpermissions.util.loadmanager.MainThread;
import de.bananaco.bpermissions.util.loadmanager.TaskRunnable;
import de.bananaco.bpermissions.unit.PermissionsTest;
import de.bananaco.bpermissions.util.Debugger;
import de.bananaco.permissions.ImportManager;
Expand Down
Expand Up @@ -5,7 +5,7 @@
import java.util.UUID;

import de.bananaco.bpermissions.api.*;
import de.bananaco.bpermissions.imp.loadmanager.TaskRunnable;
import de.bananaco.bpermissions.util.loadmanager.TaskRunnable;
import de.bananaco.bpermissions.util.Debugger;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
Expand All @@ -20,7 +20,7 @@
import org.bukkit.permissions.PermissionDefault;
import org.bukkit.plugin.Plugin;

import de.bananaco.bpermissions.imp.loadmanager.MainThread;
import de.bananaco.bpermissions.util.loadmanager.MainThread;

/**
* Handles all the superperms registering/unregistering for
Expand Down
@@ -1,13 +1,13 @@
package de.bananaco.bpermissions.imp;

import de.bananaco.bpermissions.api.*;
import de.bananaco.bpermissions.imp.loadmanager.MainThread;
import de.bananaco.bpermissions.util.loadmanager.MainThread;

import java.io.File;
import java.io.IOException;
import java.util.*;

import de.bananaco.bpermissions.imp.loadmanager.TaskRunnable;
import de.bananaco.bpermissions.util.loadmanager.TaskRunnable;
import de.bananaco.bpermissions.util.Debugger;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
Expand Down
Expand Up @@ -13,8 +13,8 @@
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;

import de.bananaco.bpermissions.imp.loadmanager.MainThread;
import de.bananaco.bpermissions.imp.loadmanager.TaskRunnable;
import de.bananaco.bpermissions.util.loadmanager.MainThread;
import de.bananaco.bpermissions.util.loadmanager.TaskRunnable;

public class ImportManager {

Expand Down
@@ -1,130 +1,130 @@
package de.bananaco.bpermissions.imp.loadmanager;

import java.util.ArrayList;
import java.util.List;

import de.bananaco.bpermissions.imp.loadmanager.TaskRunnable.TaskType;
import de.bananaco.bpermissions.util.Debugger;

public class MainThread extends Thread implements TaskThread {

private static MainThread thread = new MainThread();

public static MainThread getInstance() {
return thread;
}
// a list of tasks
private List<Runnable> load = new ArrayList<Runnable>();
private List<Runnable> save = new ArrayList<Runnable>();
private List<Runnable> server = new ArrayList<Runnable>();
private boolean running = true;
private boolean started = false;

@Override
public void run() {
while (running) {
check();
}
}

/**
* Internal method, check scheduler
*/
private synchronized void check() {
try {
if (hasTasks()) {
TaskRunnable run = null;
List tasks = null;
if (getTasks(TaskRunnable.TaskType.LOAD).size() > 0) {
tasks = getTasks(TaskRunnable.TaskType.LOAD);
} else if (getTasks(TaskRunnable.TaskType.SAVE).size() > 0) {
tasks = getTasks(TaskRunnable.TaskType.SAVE);
} else if (getTasks(TaskRunnable.TaskType.SERVER).size() > 0) {
tasks = getTasks(TaskRunnable.TaskType.SERVER);
}

if (tasks != null) {
run = (TaskRunnable) tasks.get(0);
tasks.remove(0);
TaskRunnable r = run;

r.run();
}
} else {
sleep(10L);
}
} catch (Exception e) {
e.printStackTrace();
}
}

/**
* Internal method, concurrent modification exception prevention
*
* @return List<Runnable>
*/
private List<Runnable> getTasks(TaskType type) {
if (type == TaskType.LOAD) {
return load;
}
if (type == TaskType.SAVE) {
return save;
}
if (type == TaskType.SERVER) {
return server;
}
return new ArrayList<Runnable>();
}

// from the interface
public boolean hasTasks() {
return load.size() + save.size() + server.size() > 0;
}

public boolean isRunning() {
return running;
}

public void setRunning(final boolean running) {
clearTasks();
if (!running) {
thread.running = false;
thread = null;
}
}

public void clearTasks() {
load.clear();
save.clear();
server.clear();
}

public boolean getStarted() {
return started;
}

public void setStarted(final boolean started) {
TaskRunnable r = new TaskRunnable() {
public void run() {
thread.started = started;
Debugger.log("Set started: " + started);
}

public TaskType getType() {
return TaskType.SERVER;
}
};
schedule(r);
}

public void schedule(TaskRunnable r) {
if (tasksCount() > 10 && (r.getType() == TaskType.LOAD || r.getType() == TaskType.SAVE))
return;

getTasks(r.getType()).add(r);
}

public int tasksCount() {
return load.size() + save.size();
}
}
package de.bananaco.bpermissions.util.loadmanager;

import java.util.ArrayList;
import java.util.List;

import de.bananaco.bpermissions.util.loadmanager.TaskRunnable.TaskType;
import de.bananaco.bpermissions.util.Debugger;

public class MainThread extends Thread implements TaskThread {

private static MainThread thread = new MainThread();

public static MainThread getInstance() {
return thread;
}
// a list of tasks
private List<Runnable> load = new ArrayList<Runnable>();
private List<Runnable> save = new ArrayList<Runnable>();
private List<Runnable> server = new ArrayList<Runnable>();
private boolean running = true;
private boolean started = false;

@Override
public void run() {
while (running) {
check();
}
}

/**
* Internal method, check scheduler
*/
private synchronized void check() {
try {
if (hasTasks()) {
TaskRunnable run = null;
List tasks = null;
if (getTasks(TaskRunnable.TaskType.LOAD).size() > 0) {
tasks = getTasks(TaskRunnable.TaskType.LOAD);
} else if (getTasks(TaskRunnable.TaskType.SAVE).size() > 0) {
tasks = getTasks(TaskRunnable.TaskType.SAVE);
} else if (getTasks(TaskRunnable.TaskType.SERVER).size() > 0) {
tasks = getTasks(TaskRunnable.TaskType.SERVER);
}

if (tasks != null) {
run = (TaskRunnable) tasks.get(0);
tasks.remove(0);
TaskRunnable r = run;

r.run();
}
} else {
sleep(10L);
}
} catch (Exception e) {
e.printStackTrace();
}
}

/**
* Internal method, concurrent modification exception prevention
*
* @return List<Runnable>
*/
private List<Runnable> getTasks(TaskType type) {
if (type == TaskType.LOAD) {
return load;
}
if (type == TaskType.SAVE) {
return save;
}
if (type == TaskType.SERVER) {
return server;
}
return new ArrayList<Runnable>();
}

// from the interface
public boolean hasTasks() {
return load.size() + save.size() + server.size() > 0;
}

public boolean isRunning() {
return running;
}

public void setRunning(final boolean running) {
clearTasks();
if (!running) {
thread.running = false;
thread = null;
}
}

public void clearTasks() {
load.clear();
save.clear();
server.clear();
}

public boolean getStarted() {
return started;
}

public void setStarted(final boolean started) {
TaskRunnable r = new TaskRunnable() {
public void run() {
thread.started = started;
Debugger.log("Set started: " + started);
}

public TaskType getType() {
return TaskType.SERVER;
}
};
schedule(r);
}

public void schedule(TaskRunnable r) {
if (tasksCount() > 10 && (r.getType() == TaskType.LOAD || r.getType() == TaskType.SAVE))
return;

getTasks(r.getType()).add(r);
}

public int tasksCount() {
return load.size() + save.size();
}
}
@@ -1,12 +1,12 @@
package de.bananaco.bpermissions.imp.loadmanager;

public interface TaskRunnable extends Runnable {

static enum TaskType {
SAVE,
LOAD,
SERVER
}

public TaskType getType();
}
package de.bananaco.bpermissions.util.loadmanager;

public interface TaskRunnable extends Runnable {

static enum TaskType {
SAVE,
LOAD,
SERVER
}

public TaskType getType();
}

0 comments on commit afb794a

Please sign in to comment.