Skip to content

Commit

Permalink
Dispatch torrent file created/deleted events
Browse files Browse the repository at this point in the history
  • Loading branch information
anthonyraymond committed Apr 30, 2018
1 parent c376d9f commit ea3a846
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@
import com.google.common.collect.Lists;
import com.turn.ttorrent.common.protocol.TrackerMessage.AnnounceRequestMessage.RequestEvent;
import org.araymond.joal.core.config.AppConfiguration;
import org.araymond.joal.core.events.torrent.files.TorrentFileAddedEvent;
import org.araymond.joal.core.events.torrent.files.TorrentFileDeletedEvent;
import org.araymond.joal.core.exception.NoMoreTorrentsFileAvailableException;
import org.araymond.joal.core.torrent.torrent.InfoHash;
import org.araymond.joal.core.torrent.torrent.MockedTorrent;
Expand All @@ -16,6 +18,7 @@
import org.araymond.joal.core.ttorrent.client.announcer.request.AnnounceRequest;
import org.araymond.joal.core.ttorrent.client.announcer.request.AnnouncerExecutor;
import org.slf4j.Logger;
import org.springframework.context.ApplicationEventPublisher;

import java.time.temporal.ChronoUnit;
import java.util.ArrayList;
Expand All @@ -30,6 +33,7 @@ public class Client implements TorrentFileChangeAware, ClientFacade {

private final AppConfiguration appConfiguration;
private final TorrentFileProvider torrentFileProvider;
private final ApplicationEventPublisher eventPublisher;
private AnnouncerExecutor announcerExecutor;
private final List<Announcer> currentlySeedingAnnouncer;
private final DelayQueue<AnnounceRequest> delayQueue;
Expand All @@ -38,11 +42,12 @@ public class Client implements TorrentFileChangeAware, ClientFacade {
private Thread thread;
private volatile boolean stop = true;

Client(final AppConfiguration appConfiguration, final TorrentFileProvider torrentFileProvider, final AnnouncerExecutor announcerExecutor, final DelayQueue<AnnounceRequest> delayQueue, final AnnouncerFactory announcerFactory) {
Client(final AppConfiguration appConfiguration, final TorrentFileProvider torrentFileProvider, final AnnouncerExecutor announcerExecutor, final DelayQueue<AnnounceRequest> delayQueue, final AnnouncerFactory announcerFactory, final ApplicationEventPublisher eventPublisher) {
Preconditions.checkNotNull(appConfiguration, "AppConfiguration must not be null");
Preconditions.checkNotNull(torrentFileProvider, "TorrentFileProvider must not be null");
Preconditions.checkNotNull(delayQueue, "DelayQueue must not be null");
Preconditions.checkNotNull(announcerFactory, "AnnouncerFactory must not be null");
this.eventPublisher = eventPublisher;
this.appConfiguration = appConfiguration;
this.torrentFileProvider = torrentFileProvider;
this.announcerExecutor = announcerExecutor;
Expand Down Expand Up @@ -174,6 +179,7 @@ public void onTorrentHasStopped(final Announcer stoppedAnnouncer) {

@Override
public void onTorrentFileAdded(final MockedTorrent torrent) {
this.eventPublisher.publishEvent(new TorrentFileAddedEvent(torrent));
if (this.stop) {
return;
}
Expand All @@ -192,6 +198,7 @@ public void onTorrentFileAdded(final MockedTorrent torrent) {

@Override
public void onTorrentFileRemoved(final MockedTorrent torrent) {
this.eventPublisher.publishEvent(new TorrentFileDeletedEvent(torrent));
try {
this.lock.writeLock().lock();
this.currentlySeedingAnnouncer.stream()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ public ClientFacade build() {

final AnnouncerExecutor announcerExecutor = new AnnouncerExecutor(announceResponseCallback);

final Client client = new Client(this.appConfiguration, this.torrentFileProvider, announcerExecutor, this.delayQueue, this.announcerFactory);
final Client client = new Client(this.appConfiguration, this.torrentFileProvider, announcerExecutor, this.delayQueue, this.announcerFactory, this.eventPublisher);
clientNotifier.setClient(client);

return client;
Expand Down

0 comments on commit ea3a846

Please sign in to comment.