Implement DataLockAPI.java in DataLock.java

This commit is contained in:
Len 2022-10-19 17:55:51 +02:00
parent 3c843d4004
commit 03ed8939ed

View File

@ -7,7 +7,7 @@ import org.bukkit.scheduler.BukkitRunnable;
import java.util.HashSet; import java.util.HashSet;
import java.util.UUID; import java.util.UUID;
public class DataLock { public class DataLock implements DataLockAPI {
private static DataLock instance = null; private static DataLock instance = null;
@ -21,6 +21,7 @@ public class DataLock {
private final DataLockLib plugin; private final DataLockLib plugin;
private final Idempotency activeRequests; private final Idempotency activeRequests;
private DataLock() { private DataLock() {
DataLockAPI.Provider.register(this);
pluginMessageListener = new PluginMessageListener(); pluginMessageListener = new PluginMessageListener();
plugin = DataLockLib.getInstance(); plugin = DataLockLib.getInstance();
activeRequests = new Idempotency(); activeRequests = new Idempotency();
@ -41,22 +42,26 @@ public class DataLock {
return activeRequests.removeIdempotencyData(requestType, idempotencyData); return activeRequests.removeIdempotencyData(requestType, idempotencyData);
} }
@Override
public synchronized void registerChannel(String channel) { public synchronized void registerChannel(String channel) {
activeChannels.add(channel); activeChannels.add(channel);
plugin.getServer().getMessenger().registerOutgoingPluginChannel(plugin, channel); plugin.getServer().getMessenger().registerOutgoingPluginChannel(plugin, channel);
plugin.getServer().getMessenger().registerIncomingPluginChannel(plugin, channel, pluginMessageListener); plugin.getServer().getMessenger().registerIncomingPluginChannel(plugin, channel, pluginMessageListener);
} }
@Override
public synchronized boolean isActiveChannel(String channel) { public synchronized boolean isActiveChannel(String channel) {
return activeChannels.contains(channel); return activeChannels.contains(channel);
} }
@Override
public void tryLock(String channel, String data) { public void tryLock(String channel, String data) {
IdempotencyData idempotencyData = new IdempotencyData(channel, data, UUID.randomUUID()); IdempotencyData idempotencyData = new IdempotencyData(channel, data, UUID.randomUUID());
activeRequests.putIdempotencyData(RequestType.TRY_LOCK, idempotencyData); activeRequests.putIdempotencyData(RequestType.TRY_LOCK, idempotencyData);
sendPluginMessage(RequestType.TRY_LOCK, idempotencyData); sendPluginMessage(RequestType.TRY_LOCK, idempotencyData);
} }
@Override
public void tryUnlock(String channel, String data) { public void tryUnlock(String channel, String data) {
IdempotencyData idempotencyData = new IdempotencyData(channel, data, UUID.randomUUID()); IdempotencyData idempotencyData = new IdempotencyData(channel, data, UUID.randomUUID());
activeRequests.putIdempotencyData(RequestType.TRY_UNLOCK, idempotencyData); activeRequests.putIdempotencyData(RequestType.TRY_UNLOCK, idempotencyData);