diff --git a/CHANGELOG.md b/CHANGELOG.md index 408e0b7..bfb1f46 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,8 @@ +## Version 0.1.5 + +- Added Broadcasting API lib v0.57. +- Fixed BMP-8259 - NullPointerException in HandlerManager. + ## Version 0.1.1 - make ctrl+f search diff --git a/developer-addon/build.gradle b/developer-addon/build.gradle index b32ec7a..66d05c8 100644 --- a/developer-addon/build.gradle +++ b/developer-addon/build.gradle @@ -31,7 +31,7 @@ configurations { implementation.canBeResolved = true } -def version = "0.1.4" +def version = "0.1.5" def baseName = "${LOWEST_BOOKMAP_VERSION}---${HIGHEST_BOOKMAP_VERSION}---2---python-api---${version}" dependencies { diff --git a/serverside-rpc/build.gradle b/serverside-rpc/build.gradle index dde5dc6..a09a36c 100644 --- a/serverside-rpc/build.gradle +++ b/serverside-rpc/build.gradle @@ -12,7 +12,7 @@ sourceCompatibility = JavaVersion.VERSION_14 targetCompatibility = JavaVersion.VERSION_14 group 'com.bookmap.api.rpc' -version '0.1.2' +version '0.1.5' repositories { mavenCentral() @@ -36,6 +36,8 @@ dependencies { implementation group: 'com.bookmap.api', name: 'api-core', version: lowerBookmapVersion implementation group: 'com.bookmap.api', name: 'api-simplified', version: lowerBookmapVersion + implementation files("libs/broadcasting-api-0.57.jar") + compileOnly group: 'com.google.code.gson', name: 'gson', version: '2.8.9' fatJarLib group: 'com.google.dagger', name: 'dagger', version: '2.42' diff --git a/serverside-rpc/libs/broadcasting-api-0.57.jar b/serverside-rpc/libs/broadcasting-api-0.57.jar new file mode 100644 index 0000000..28b5e63 Binary files /dev/null and b/serverside-rpc/libs/broadcasting-api-0.57.jar differ diff --git a/serverside-rpc/libs/broadcasting-api-javadoc-0.57.jar b/serverside-rpc/libs/broadcasting-api-javadoc-0.57.jar new file mode 100644 index 0000000..33c3ca6 Binary files /dev/null and b/serverside-rpc/libs/broadcasting-api-javadoc-0.57.jar differ diff --git a/serverside-rpc/src/main/java/com/bookmap/api/rpc/server/EventLoop.java b/serverside-rpc/src/main/java/com/bookmap/api/rpc/server/EventLoop.java index f1d7355..cf97917 100644 --- a/serverside-rpc/src/main/java/com/bookmap/api/rpc/server/EventLoop.java +++ b/serverside-rpc/src/main/java/com/bookmap/api/rpc/server/EventLoop.java @@ -11,15 +11,18 @@ public class EventLoop implements Closeable { - private HandlerManager handlerManager; + private volatile HandlerManager handlerManager; private final BlockingQueue events = new LinkedBlockingQueue<>(); private final AtomicBoolean isRun = new AtomicBoolean(true); + private final ExecutorService eventQueueReader = Executors.newSingleThreadExecutor(); public EventLoop() { - ExecutorService eventQueueReader = Executors.newSingleThreadExecutor(); eventQueueReader.execute(() -> { try { while (isRun.get()) { + if(this.handlerManager == null) { + continue; + } AbstractEvent event = events.poll(10, TimeUnit.SECONDS); if (event == null) { continue; @@ -41,6 +44,7 @@ public void pushEvent(AbstractEvent event) { @Override public void close() throws IOException { isRun.set(false); + eventQueueReader.shutdown(); } public void setHandlerManager(HandlerManager handlerManager) { diff --git a/serverside-rpc/src/main/java/com/bookmap/api/rpc/server/addon/Connector.java b/serverside-rpc/src/main/java/com/bookmap/api/rpc/server/addon/Connector.java index b371890..7e9cf6d 100644 --- a/serverside-rpc/src/main/java/com/bookmap/api/rpc/server/addon/Connector.java +++ b/serverside-rpc/src/main/java/com/bookmap/api/rpc/server/addon/Connector.java @@ -78,7 +78,7 @@ public void subscribeToLiveData(String generatorName, EventLoop eventLoop, Strin broadcasterConsumer.setListenersForGenerator(providerName, generatorName, filterListener, new SettingsListener(eventLoop, generatorName)); broadcasterConsumer.subscribeToLiveData(providerName, generatorInfo.getGeneratorName(), - Event.class, eventListener, subscriptionListener); + eventListener, subscriptionListener); }); } } diff --git a/serverside-rpc/src/main/java/com/bookmap/api/rpc/server/addon/listeners/broadcasting/RpcProviderStatusListener.java b/serverside-rpc/src/main/java/com/bookmap/api/rpc/server/addon/listeners/broadcasting/RpcProviderStatusListener.java index 5947f9e..5f7efdb 100644 --- a/serverside-rpc/src/main/java/com/bookmap/api/rpc/server/addon/listeners/broadcasting/RpcProviderStatusListener.java +++ b/serverside-rpc/src/main/java/com/bookmap/api/rpc/server/addon/listeners/broadcasting/RpcProviderStatusListener.java @@ -15,17 +15,17 @@ public RpcProviderStatusListener(ProviderStatusService providerStatusService) { } @Override - public void providerBecameAvailable(String providerName) { + public void providerBecameAvailable(String providerName, String providerId) { providerStatusService.addProvider(providerName); } @Override - public void providerBecameUnavailable(String providerName) { + public void providerBecameUnavailable(String providerName, String providerId) { providerStatusService.removeProvider(providerName); } @Override - public void providerUpdateGenerators(String providerName, List generators) { - providerStatusService.updateProvider(providerName, generators); + public void providerUpdateGenerator(String providerName, String providerId, GeneratorInfo generator, boolean isOnline) { + providerStatusService.updateProvider(providerName, generator, isOnline); } } diff --git a/serverside-rpc/src/main/java/com/bookmap/api/rpc/server/services/ProviderStatusService.java b/serverside-rpc/src/main/java/com/bookmap/api/rpc/server/services/ProviderStatusService.java index 3f507e9..aae397c 100644 --- a/serverside-rpc/src/main/java/com/bookmap/api/rpc/server/services/ProviderStatusService.java +++ b/serverside-rpc/src/main/java/com/bookmap/api/rpc/server/services/ProviderStatusService.java @@ -34,8 +34,14 @@ public void removeProvider(String providerName) { eventLoop.pushEvent(new ProviderStatusEvent(providerToGenerators)); } - public void updateProvider(String providerName, List generators) { - providerToGenerators.put(providerName, generators.stream().map(JsonUtil::convertObjectToJsonString).toList()); + public void updateProvider(String providerName, GeneratorInfo generator, boolean isOnline) { + List generators = providerToGenerators.get(providerName); + if(isOnline){ + generators.add(generator.getGeneratorName()); + } else { + generators.remove(generator.getGeneratorName()); + } + eventLoop.pushEvent(new ProviderStatusEvent(providerToGenerators)); }