Create new 2 global state events

This commit is contained in:
anthonyraymond 2018-01-16 22:37:54 +01:00
parent 23ad36c143
commit b5b5a25a69
8 changed files with 21 additions and 80 deletions

View file

@ -1,10 +1,10 @@
package org.araymond.joal.core;
import org.araymond.joal.core.events.global.state.GlobalSeedStartedEvent;
import org.araymond.joal.core.events.global.state.GlobalSeedStoppedEvent;
import org.araymond.joal.core.events.old.NoMoreTorrentsFileAvailableEvent;
import org.araymond.joal.core.events.old.SomethingHasFuckedUpEvent;
import org.araymond.joal.core.events.old.filechange.TorrentFileAddedEvent;
import org.araymond.joal.core.events.old.global.SeedSessionHasEndedEvent;
import org.araymond.joal.core.events.old.global.SeedSessionHasStartedEvent;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
@ -52,8 +52,8 @@ public class CoreEventListener {
@Async
@Order(Ordered.HIGHEST_PRECEDENCE)
@EventListener
void handleSeedSessionHasStarted(final SeedSessionHasStartedEvent event) {
logger.debug("Event SeedSessionHasStartedEvent caught.");
void handleSeedSessionHasStarted(final GlobalSeedStartedEvent event) {
logger.debug("Event GlobalSeedStartedEvent caught.");
// TODO : add a log to tell which BitTorrent client.
// TODO : detailed BitTorrent client log at debug log level
}
@ -61,8 +61,8 @@ public class CoreEventListener {
@Async
@Order(Ordered.HIGHEST_PRECEDENCE)
@EventListener
void handleSeedSessionHasEnded(final SeedSessionHasEndedEvent event) {
logger.debug("Event SeedSessionHasEndedEvent caught.");
void handleSeedSessionHasEnded(final GlobalSeedStoppedEvent event) {
logger.debug("Event GlobalSeedStoppedEvent caught.");
// TODO : log that the seed session is over
}

View file

@ -7,6 +7,8 @@ import org.araymond.joal.core.client.emulated.BitTorrentClient;
import org.araymond.joal.core.client.emulated.BitTorrentClientProvider;
import org.araymond.joal.core.config.AppConfiguration;
import org.araymond.joal.core.config.JoalConfigProvider;
import org.araymond.joal.core.events.global.state.GlobalSeedStartedEvent;
import org.araymond.joal.core.events.global.state.GlobalSeedStoppedEvent;
import org.araymond.joal.core.torrent.watcher.TorrentFileProvider;
import org.araymond.joal.core.ttorrent.client.*;
import org.araymond.joal.core.ttorrent.client.announcer.request.AnnounceDataAccessor;
@ -77,9 +79,7 @@ public class SeedManager {
.build();
this.client.start();
/*
publisher.publishEvent(new SeedSessionHasStartedEvent(bitTorrentClient));
*/
publisher.publishEvent(new GlobalSeedStartedEvent(bitTorrentClient));
}
public void saveNewConfiguration(final AppConfiguration config) {
@ -108,8 +108,7 @@ public class SeedManager {
public void stop() {
if (client != null) {
this.client.stop();
// TODO: fix it
// this.publisher.publishEvent(new SeedSessionHasEndedEvent());
this.publisher.publishEvent(new GlobalSeedStoppedEvent());
this.client = null;
}
if (this.bandwidthDispatcher != null) {

View file

@ -1,16 +1,12 @@
package org.araymond.joal.core.events.old.global;
package org.araymond.joal.core.events.global.state;
import com.google.common.base.Preconditions;
import org.araymond.joal.core.client.emulated.BitTorrentClient;
/**
* Created by raymo on 06/05/2017.
*/
public class SeedSessionHasStartedEvent {
public class GlobalSeedStartedEvent {
private final BitTorrentClient bitTorrentClient;
public SeedSessionHasStartedEvent(final BitTorrentClient bitTorrentClient) {
public GlobalSeedStartedEvent(final BitTorrentClient bitTorrentClient) {
Preconditions.checkNotNull(bitTorrentClient, "BitTorrentClient cannot be null");
this.bitTorrentClient = bitTorrentClient;
}
@ -18,5 +14,4 @@ public class SeedSessionHasStartedEvent {
public BitTorrentClient getBitTorrentClient() {
return bitTorrentClient;
}
}

View file

@ -0,0 +1,4 @@
package org.araymond.joal.core.events.global.state;
public class GlobalSeedStoppedEvent {
}

View file

@ -1,7 +0,0 @@
package org.araymond.joal.core.events.old.global;
/**
* Created by raymo on 06/05/2017.
*/
public class SeedSessionHasEndedEvent {
}

View file

@ -1,7 +1,7 @@
package org.araymond.joal.web.services.corelistener;
import org.araymond.joal.core.events.old.global.SeedSessionHasEndedEvent;
import org.araymond.joal.core.events.old.global.SeedSessionHasStartedEvent;
import org.araymond.joal.core.events.global.state.GlobalSeedStartedEvent;
import org.araymond.joal.core.events.global.state.GlobalSeedStoppedEvent;
import org.araymond.joal.web.annotations.ConditionalOnWebUi;
import org.araymond.joal.web.messages.outgoing.impl.global.SeedSessionHasEndedPayload;
import org.araymond.joal.web.messages.outgoing.impl.global.SeedSessionHasStartedPayload;
@ -31,7 +31,7 @@ public class WebGlobalEventListener extends WebEventListener {
@Order(Ordered.LOWEST_PRECEDENCE)
@EventListener
void handleSeedSessionHasStarted(final SeedSessionHasStartedEvent event) {
void handleSeedSessionHasStarted(final GlobalSeedStartedEvent event) {
logger.debug("Send SeedSessionHasStartedPayload to clients.");
final String client = event.getBitTorrentClient().getHeaders().stream()
@ -45,7 +45,7 @@ public class WebGlobalEventListener extends WebEventListener {
@Order(Ordered.LOWEST_PRECEDENCE)
@EventListener
void handleSeedSessionHasEnded(final SeedSessionHasEndedEvent event) {
void handleSeedSessionHasEnded(final GlobalSeedStoppedEvent event) {
logger.debug("Send SeedSessionHasEndedPayload to clients.");
this.messagingTemplate.convertAndSend("/global", new SeedSessionHasEndedPayload());

View file

@ -1,21 +0,0 @@
package org.araymond.joal.core.events.old.global;
import org.junit.Test;
import static org.assertj.core.api.Assertions.fail;
/**
* Created by raymo on 25/05/2017.
*/
public class SeedSessionHasEndedEventTest {
@Test
public void shouldBuild() {
try {
new SeedSessionHasEndedEvent();
} catch (final Throwable t) {
fail("Failed to build", t);
}
}
}

View file

@ -1,29 +0,0 @@
package org.araymond.joal.core.events.old.global;
import org.araymond.joal.core.client.emulated.BitTorrentClient;
import org.junit.Test;
import org.mockito.Mockito;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
/**
* Created by raymo on 25/05/2017.
*/
public class SeedSessionHasStartedEventTest {
@Test
public void shouldNotBuildWithoutTorrent() {
assertThatThrownBy(() -> new SeedSessionHasStartedEvent(null))
.isInstanceOf(NullPointerException.class)
.hasMessageContaining("BitTorrentClient cannot be null");
}
@Test
public void shouldBuild() {
final BitTorrentClient client = Mockito.mock(BitTorrentClient.class);
final SeedSessionHasStartedEvent event = new SeedSessionHasStartedEvent(client);
assertThat(event.getBitTorrentClient()).isEqualTo(client);
}
}