Home | History | Annotate | Download | only in model
      1 package com.bumptech.glide.load.model;
      2 
      3 import android.util.Log;
      4 
      5 import com.bumptech.glide.load.Encoder;
      6 import com.bumptech.glide.util.ByteArrayPool;
      7 
      8 import java.io.IOException;
      9 import java.io.InputStream;
     10 import java.io.OutputStream;
     11 
     12 /**
     13  * An {@link com.bumptech.glide.load.Encoder} that can write an {@link java.io.InputStream} to disk.
     14  */
     15 public class StreamEncoder implements Encoder<InputStream> {
     16     private static final String TAG = "StreamEncoder";
     17 
     18     @Override
     19     public boolean encode(InputStream data, OutputStream os) {
     20         byte[] buffer = ByteArrayPool.get().getBytes();
     21         try {
     22             int read;
     23             while ((read = data.read(buffer)) != -1) {
     24                     os.write(buffer, 0, read);
     25             }
     26             return true;
     27         } catch (IOException e) {
     28             if (Log.isLoggable(TAG, Log.DEBUG)) {
     29                 Log.d(TAG, "Failed to encode data onto the OutputStream", e);
     30             }
     31             return false;
     32         } finally {
     33             ByteArrayPool.get().releaseBytes(buffer);
     34         }
     35     }
     36 
     37     @Override
     38     public String getId() {
     39         return "";
     40     }
     41 }
     42