コード例 #1
0
ファイル: BTUploader.java プロジェクト: mnutt/limewire5-ruby
  @Override
  public UploadStatus getState() {
    if (cancelled.get()) {
      return UploadStatus.CANCELLED;
    }

    if (finished.get()) {
      return UploadStatus.COMPLETE;
    }

    TorrentStatus status = torrent.getStatus();

    if (status == null) {
      return UploadStatus.CONNECTING;
    }

    if (torrent.isPaused() || (torrent.isFinished() && torrent.getNumUploads() == 0)) {
      return UploadStatus.QUEUED;
    }

    if (status.isError()) {
      // TODO add retry
      // TODO custom error state
      return UploadStatus.UNAVAILABLE_RANGE;
    }

    if (status.isPaused()) {
      return UploadStatus.UPLOADING;
    } else {
      TorrentState state = status.getState();

      switch (state) {
        case DOWNLOADING:
        case FINISHED:
        case SEEDING:
          return UploadStatus.UPLOADING;
        case QUEUED_FOR_CHECKING:
        case CHECKING_FILES:
        case DOWNLOADING_METADATA:
        case ALLOCATING:
          return UploadStatus.CONNECTING;
        default:
          throw new UnsupportedOperationException("Unknown state: " + state);
      }
    }
  }