Package rabbit.proxy

Source Code of rabbit.proxy.PartialCacher$FileWriter

package rabbit.proxy;

import java.io.IOException;
import java.io.RandomAccessFile;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
import java.nio.channels.WritableByteChannel;
import java.util.StringTokenizer;
import rabbit.http.HttpHeader;
import rabbit.http.ContentRangeParser;
import rabbit.util.Logger;

/** An updater that writes an updated range to a cache file.
*
* @author <a href="mailto:robo@khelekore.org">Robert Olofsson</a>
*/
public class PartialCacher {
    private ContentRangeParser crp;
    private FileWriter fw;

    public PartialCacher (Logger logger, String fileName, HttpHeader response)
  throws IOException {
  //Content-Range: 0-4/25\r\n
  String cr = response.getHeader ("Content-Range");
  if (cr != null)
      crp = new ContentRangeParser (cr, logger);
  if (!crp.isValid ())
      throw new IllegalArgumentException ("bad range: " + cr);
  RandomAccessFile raf = new RandomAccessFile (fileName, "rw");
  FileChannel fc = raf.getChannel ();
  fc.position (crp.getStart ());
  fw = new FileWriter (fc);
    }
   
    private class FileWriter implements WritableByteChannel {
  private FileChannel fc;

  public FileWriter (FileChannel fc) {
      this.fc = fc;
  }

  public int write (ByteBuffer src) throws IOException {
      return fc.write (src);
  }
 
  public boolean isOpen () {
      return fc.isOpen ();
  }

  public void close () throws IOException {
      fc.close ();
  }
    }

    public WritableByteChannel getChannel () {
  return fw;
    }

    public long getStart () {
  return crp.getStart ();
    }
   
    public long getEnd () {
  return crp.getEnd ();
    }

    public long getTotal () {
  return crp.getTotal ();
    }
}
TOP

Related Classes of rabbit.proxy.PartialCacher$FileWriter

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.