1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 package org.apache.hc.core5.reactive;
29
30 import org.apache.hc.core5.http.Header;
31 import org.apache.hc.core5.http.nio.DataStreamChannel;
32
33 import java.io.IOException;
34 import java.nio.ByteBuffer;
35 import java.nio.channels.WritableByteChannel;
36 import java.util.ArrayList;
37 import java.util.List;
38
39 public class BasicDataStreamChannel implements DataStreamChannel {
40
41 private final WritableByteChannel byteChannel;
42 private List<Header> trailers;
43
44 public BasicDataStreamChannel(final WritableByteChannel byteChannel) {
45 this.byteChannel = byteChannel;
46 }
47
48 @Override
49 public void requestOutput() {
50 }
51
52 @Override
53 public int write(final ByteBuffer src) throws IOException {
54 return byteChannel.write(src);
55 }
56
57 @Override
58 public void endStream() throws IOException {
59 if (byteChannel.isOpen()) {
60 byteChannel.close();
61 }
62 }
63
64 @Override
65 public void endStream(final List<? extends Header> trailers) throws IOException {
66 endStream();
67 if (trailers != null) {
68 this.trailers = new ArrayList<>();
69 this.trailers.addAll(trailers);
70 }
71 }
72
73 public List<Header> getTrailers() {
74 return trailers;
75 }
76
77 }