OSDN Git Service

動画ダウンロード処理中にキャンセルできる処理を実装
authoryukihane <yukihane.feather@gmail.com>
Thu, 11 Aug 2011 05:05:46 +0000 (14:05 +0900)
committeryukihane <yukihane.feather@gmail.com>
Thu, 11 Aug 2011 05:05:46 +0000 (14:05 +0900)
src/nicobrowser/NicoHttpClient.java
src/nicobrowser/ProgressListener.java

index b206227..e1f1a22 100644 (file)
@@ -735,6 +735,9 @@ public class NicoHttpClient {
             out.write(buffer, 0, i);
             downloadSize += i;
             listener.progress(fileSize, downloadSize);
+            if(listener.getCancel()){
+                return new GetFlvResult(null, Status.GET_INFO, userName);
+            }
         }
 
         response.getEntity().consumeContent();
index 85b5ed1..47ed430 100644 (file)
@@ -7,13 +7,30 @@ package nicobrowser;
  */
 public interface ProgressListener {
 
+    /**
+     * NicoHttpClient からユーザスレッドに通知を行う際に使用されるメソッドです.
+     * @param fileSize ダウンロードするファイルサイズ.
+     * @param downloadSize  現在ダウンロードが完了したサイズ.
+     */
     void progress(long fileSize, long downloadSize);
+
+    /**
+     * ユーザスレッドからNicoHttpClientに対してダウンロードのキャンセルを行う場合にtrueを設定してください.
+     * @return ダウンロードを中断する場合はtrue.
+     */
+    public boolean getCancel();
     /**
      * 何もしないリスナの実装.
      */
     static final ProgressListener EMPTY_LISTENER = new ProgressListener() {
 
+        @Override
         public void progress(long fileSize, long downloadSize) {
         }
+
+        @Override
+        public boolean getCancel() {
+            return false;
+        }
     };
 }