1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package io.netty.handler.codec.http;
17
18 import io.netty.buffer.ByteBuf;
19 import io.netty.buffer.Unpooled;
20
21
22
23
24
25 public class DefaultFullHttpResponse extends DefaultHttpResponse implements FullHttpResponse {
26
27 private final ByteBuf content;
28 private final HttpHeaders trailingHeaders;
29 private final boolean validateHeaders;
30
31 public DefaultFullHttpResponse(HttpVersion version, HttpResponseStatus status) {
32 this(version, status, Unpooled.buffer(0));
33 }
34
35 public DefaultFullHttpResponse(HttpVersion version, HttpResponseStatus status, ByteBuf content) {
36 this(version, status, content, true);
37 }
38
39 public DefaultFullHttpResponse(HttpVersion version, HttpResponseStatus status,
40 ByteBuf content, boolean validateHeaders) {
41 super(version, status, validateHeaders);
42 if (content == null) {
43 throw new NullPointerException("content");
44 }
45 this.content = content;
46 trailingHeaders = new DefaultHttpHeaders(validateHeaders);
47 this.validateHeaders = validateHeaders;
48 }
49
50 @Override
51 public HttpHeaders trailingHeaders() {
52 return trailingHeaders;
53 }
54
55 @Override
56 public ByteBuf content() {
57 return content;
58 }
59
60 @Override
61 public int refCnt() {
62 return content.refCnt();
63 }
64
65 @Override
66 public FullHttpResponse retain() {
67 content.retain();
68 return this;
69 }
70
71 @Override
72 public FullHttpResponse retain(int increment) {
73 content.retain(increment);
74 return this;
75 }
76
77 @Override
78 public boolean release() {
79 return content.release();
80 }
81
82 @Override
83 public boolean release(int decrement) {
84 return content.release(decrement);
85 }
86
87 @Override
88 public FullHttpResponse setProtocolVersion(HttpVersion version) {
89 super.setProtocolVersion(version);
90 return this;
91 }
92
93 @Override
94 public FullHttpResponse setStatus(HttpResponseStatus status) {
95 super.setStatus(status);
96 return this;
97 }
98
99 @Override
100 public FullHttpResponse copy() {
101 DefaultFullHttpResponse copy = new DefaultFullHttpResponse(
102 getProtocolVersion(), getStatus(), content().copy(), validateHeaders);
103 copy.headers().set(headers());
104 copy.trailingHeaders().set(trailingHeaders());
105 return copy;
106 }
107
108 @Override
109 public FullHttpResponse duplicate() {
110 DefaultFullHttpResponse duplicate = new DefaultFullHttpResponse(getProtocolVersion(), getStatus(),
111 content().duplicate(), validateHeaders);
112 duplicate.headers().set(headers());
113 duplicate.trailingHeaders().set(trailingHeaders());
114 return duplicate;
115 }
116
117 @Override
118 public String toString() {
119 return HttpMessageUtil.appendFullResponse(new StringBuilder(256), this).toString();
120 }
121 }