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