Mercurial Hosting > luan
changeset 857:c20e2a4908d1
remove InclusiveByteRange
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Wed, 21 Sep 2016 14:54:44 -0600 |
parents | ea1768c00d03 |
children | dbbd9c3f14f8 |
files | src/org/eclipse/jetty/server/InclusiveByteRange.java |
diffstat | 1 files changed, 0 insertions(+), 227 deletions(-) [+] |
line wrap: on
line diff
--- a/src/org/eclipse/jetty/server/InclusiveByteRange.java Wed Sep 21 00:19:26 2016 -0600 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,227 +0,0 @@ -// -// ======================================================================== -// Copyright (c) 1995-2014 Mort Bay Consulting Pty. Ltd. -// ------------------------------------------------------------------------ -// All rights reserved. This program and the accompanying materials -// are made available under the terms of the Eclipse Public License v1.0 -// and Apache License v2.0 which accompanies this distribution. -// -// The Eclipse Public License is available at -// http://www.eclipse.org/legal/epl-v10.html -// -// The Apache License v2.0 is available at -// http://www.opensource.org/licenses/apache2.0.php -// -// You may elect to redistribute this code under either of these licenses. -// ======================================================================== -// - -package org.eclipse.jetty.server; - -import java.util.Enumeration; -import java.util.List; -import java.util.StringTokenizer; - -import org.eclipse.jetty.util.LazyList; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/* ------------------------------------------------------------ */ -/** Byte range inclusive of end points. - * <PRE> - * - * parses the following types of byte ranges: - * - * bytes=100-499 - * bytes=-300 - * bytes=100- - * bytes=1-2,2-3,6-,-2 - * - * given an entity length, converts range to string - * - * bytes 100-499/500 - * - * </PRE> - * - * Based on RFC2616 3.12, 14.16, 14.35.1, 14.35.2 - * @version $version$ - * - */ -public class InclusiveByteRange -{ - private static final Logger LOG = LoggerFactory.getLogger(InclusiveByteRange.class); - - long first = 0; - long last = 0; - - public InclusiveByteRange(long first, long last) - { - this.first = first; - this.last = last; - } - - public long getFirst() - { - return first; - } - - public long getLast() - { - return last; - } - - - - /* ------------------------------------------------------------ */ - /** - * @param headers Enumeration of Range header fields. - * @param size Size of the resource. - * @return LazyList of satisfiable ranges - */ - public static List satisfiableRanges(Enumeration headers, long size) - { - Object satRanges=null; - - // walk through all Range headers - headers: - while (headers.hasMoreElements()) - { - String header = (String) headers.nextElement(); - StringTokenizer tok = new StringTokenizer(header,"=,",false); - String t=null; - try - { - // read all byte ranges for this header - while (tok.hasMoreTokens()) - { - try - { - t = tok.nextToken().trim(); - - long first = -1; - long last = -1; - int d = t.indexOf('-'); - if (d < 0 || t.indexOf("-",d + 1) >= 0) - { - if ("bytes".equals(t)) - continue; - LOG.warn("Bad range format: {}",t); - continue headers; - } - else if (d == 0) - { - if (d + 1 < t.length()) - last = Long.parseLong(t.substring(d + 1).trim()); - else - { - LOG.warn("Bad range format: {}",t); - continue; - } - } - else if (d + 1 < t.length()) - { - first = Long.parseLong(t.substring(0,d).trim()); - last = Long.parseLong(t.substring(d + 1).trim()); - } - else - first = Long.parseLong(t.substring(0,d).trim()); - - if (first == -1 && last == -1) - continue headers; - - if (first != -1 && last != -1 && (first > last)) - continue headers; - - if (first < size) - { - InclusiveByteRange range = new InclusiveByteRange(first,last); - satRanges = LazyList.add(satRanges,range); - } - } - catch (NumberFormatException e) - { - LOG.warn("Bad range format: {}",t); - LOG.trace("",e); - continue; - } - } - } - catch(Exception e) - { - LOG.warn("Bad range format: {}",t); - LOG.trace("",e); - } - } - return LazyList.getList(satRanges,true); - } - - /* ------------------------------------------------------------ */ - public long getFirst(long size) - { - if (first<0) - { - long tf=size-last; - if (tf<0) - tf=0; - return tf; - } - return first; - } - - /* ------------------------------------------------------------ */ - public long getLast(long size) - { - if (first<0) - return size-1; - - if (last<0 ||last>=size) - return size-1; - return last; - } - - /* ------------------------------------------------------------ */ - public long getSize(long size) - { - return getLast(size)-getFirst(size)+1; - } - - - /* ------------------------------------------------------------ */ - public String toHeaderRangeString(long size) - { - StringBuilder sb = new StringBuilder(40); - sb.append("bytes "); - sb.append(getFirst(size)); - sb.append('-'); - sb.append(getLast(size)); - sb.append("/"); - sb.append(size); - return sb.toString(); - } - - /* ------------------------------------------------------------ */ - public static String to416HeaderRangeString(long size) - { - StringBuilder sb = new StringBuilder(40); - sb.append("bytes */"); - sb.append(size); - return sb.toString(); - } - - - /* ------------------------------------------------------------ */ - @Override - public String toString() - { - StringBuilder sb = new StringBuilder(60); - sb.append(Long.toString(first)); - sb.append(":"); - sb.append(Long.toString(last)); - return sb.toString(); - } - - -} - - -