Archived
0

Fixed plugin synchronization

This commit is contained in:
Daniil
2018-08-05 16:13:42 +07:00
parent ba558ea7d1
commit 561dc3a1ce
4 changed files with 22 additions and 1 deletions

View File

@@ -5,6 +5,7 @@ import lombok.RequiredArgsConstructor;
import lombok.Setter;
import lombok.extern.slf4j.Slf4j;
import mc.core.events.api.EventQueueOwner;
import mc.core.events.api.LockableResource;
import mc.core.events.lock.LockObserveList;
import mc.core.events.runner.EventExecutorService;
import mc.core.events.runner.ResourceRunnable;
@@ -75,6 +76,9 @@ public class EventPipelineTask {
if (handler.isPluginSynchronize())
locks.add(manager.getResourceManager().getPluginLock(handler.getPlugin()));
for (LockableResource resource : handler.getLock()) {
locks.addAll(manager.getResourceManager().getAnnotationLocks(resource, event));
}
return locks;
}

View File

@@ -1,8 +1,11 @@
package mc.core.events;
import mc.core.events.api.LockableResource;
import mc.core.events.api.Plugin;
import mc.core.events.lock.PoorMansLock;
import java.util.Collection;
import java.util.Collections;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
@@ -13,4 +16,9 @@ public class SharedResourceManager {
return pluginLocks.computeIfAbsent(plugin, s -> new PoorMansLock());
}
public Collection<PoorMansLock> getAnnotationLocks(LockableResource resource, Event event) {
// TODO: Implement
return Collections.emptyList();
}
}

View File

@@ -2,5 +2,9 @@ package mc.core.events.api;
public enum LockableResource {
PLAYER,
WORLD;
PLAYER_WORLD,
EVENT_LOCATION_WORLD,
EVENT_WORLD
// TODO: Add entity-related constants
}

View File

@@ -18,6 +18,11 @@ public class LockObserveList implements Consumer<PoorMansLock> {
lock.addCallback(this);
}
public void addAll(Iterable<PoorMansLock> locks) {
for (PoorMansLock lock : locks)
add(lock);
}
public void release() {
for (PoorMansLock lock : locks) {
lock.removeCallback(this);