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 // }