--- /dev/null
+// HttpRangeList.java\r
+// $Id: HttpRangeList.java,v 1.1 2010/06/15 12:19:56 smhuang Exp $\r
+// (c) COPYRIGHT MIT and INRIA, 1996.\r
+// Please first read the full copyright statement in file COPYRIGHT.html\r
+\r
+package org.w3c.www.http;\r
+\r
+import java.util.Vector;\r
+\r
+public class HttpRangeList extends BasicValue {\r
+ HttpRange ranges[] = null;\r
+\r
+ protected void parse() {\r
+ Vector vr = new Vector(2);\r
+ ParseState ps = new ParseState(roff, rlen);\r
+ ps.separator = (byte) ',';\r
+ ps.spaceIsSep = false;\r
+ while ( HttpParser.nextItem(raw, ps) >= 0 ) {\r
+ vr.addElement(new HttpRange(this, raw, ps.start, ps.end));\r
+ ps.prepare();\r
+ }\r
+ if ( vr.size() > 0 ) {\r
+ ranges = new HttpRange[vr.size()];\r
+ vr.copyInto(ranges);\r
+ }\r
+ }\r
+\r
+ protected void updateByteValue() {\r
+ HttpBuffer buf = new HttpBuffer();\r
+ for (int i = 0 ; i < ranges.length ; i++) {\r
+ if ( i > 0 )\r
+ buf.append(',');\r
+ ranges[i].appendValue(buf);\r
+ }\r
+ raw = buf.getByteCopy();\r
+ roff = 0;\r
+ rlen = raw.length;\r
+ }\r
+\r
+ public Object getValue() {\r
+ validate();\r
+ return ranges;\r
+ }\r
+\r
+ /**\r
+ * Add a range to this list.\r
+ * @param range The range to add.\r
+ */\r
+\r
+ public void addRange(HttpRange range) {\r
+ if ( ranges == null ) {\r
+ ranges = new HttpRange[1];\r
+ ranges[0] = range;\r
+ } else {\r
+ int len = ranges.length;\r
+ HttpRange nranges[] = new HttpRange[len+1];\r
+ System.arraycopy(ranges, 0, nranges, 0, len);\r
+ nranges[len] = range;\r
+ ranges = nranges;\r
+ }\r
+ }\r
+\r
+ HttpRangeList(HttpRange ranges[]) {\r
+ this.ranges = ranges;\r
+ this.isValid = true;\r
+ }\r
+\r
+ HttpRangeList() {\r
+ this.isValid = false;\r
+ }\r
+\r
+}\r