1 module hunt.http.codec.http.model.ByteBufferContentProvider; 2 3 // import hunt.io.ByteBuffer; 4 // // import java.util.Iterator; 5 // // import java.util.NoSuchElementException; 6 7 // /** 8 // * A {@link ContentProvider} for {@link ByteBuffer}s. 9 // * <p> 10 // * The position and limit of the {@link ByteBuffer}s passed to the constructor are not modified, 11 // * and each invocation of the {@link #iterator()} method returns a {@link ByteBuffer#slice() slice} 12 // * of the original {@link ByteBuffer}. 13 // */ 14 // class ByteBufferContentProvider :AbstractTypedContentProvider { 15 // private ByteBuffer[] buffers; 16 // private int length; 17 18 // this(ByteBuffer[] buffers...) { 19 // this("application/octet-stream", buffers); 20 // } 21 22 // this(string contentType, ByteBuffer[] buffers...) { 23 // super(contentType); 24 // this.buffers = buffers; 25 // int length = 0; 26 // foreach (ByteBuffer buffer ; buffers) 27 // length += buffer.remaining(); 28 // this.length = length; 29 // } 30 31 // override 32 // long getLength() { 33 // return length; 34 // } 35 36 // override 37 // Iterator!ByteBuffer iterator() { 38 // return new Iterator!ByteBuffer() { 39 // private int index; 40 41 // override 42 // bool hasNext() { 43 // return index < buffers.length; 44 // } 45 46 // override 47 // ByteBuffer next() { 48 // try { 49 // ByteBuffer buffer = buffers[index]; 50 // buffers[index] = buffer.slice(); 51 // ++index; 52 // return buffer; 53 // } catch (ArrayIndexOutOfBoundsException x) { 54 // throw new NoSuchElementException(); 55 // } 56 // } 57 58 // override 59 // void remove() { 60 // throw new UnsupportedOperationException(); 61 // } 62 // }; 63 // } 64 // }