1 /*
2 * Copyright 2012 The Netty Project
3 *
4 * The Netty Project licenses this file to you under the Apache License,
5 * version 2.0 (the "License"); you may not use this file except in compliance
6 * with the License. You may obtain a copy of the License at:
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13 * License for the specific language governing permissions and limitations
14 * under the License.
15 */
16 package io.netty.handler.codec.http.multipart;
17
18 import io.netty.buffer.ByteBuf;
19 import io.netty.buffer.ByteBufHolder;
20
21 import java.io.File;
22 import java.io.IOException;
23 import java.io.InputStream;
24 import java.nio.charset.Charset;
25
26 /**
27 * Extended interface for InterfaceHttpData
28 */
29 public interface HttpData extends InterfaceHttpData, ByteBufHolder {
30 /**
31 * Set the content from the ChannelBuffer (erase any previous data)
32 *
33 * @param buffer
34 * must be not null
35 * @throws IOException
36 */
37 void setContent(ByteBuf buffer) throws IOException;
38
39 /**
40 * Add the content from the ChannelBuffer
41 *
42 * @param buffer
43 * must be not null except if last is set to False
44 * @param last
45 * True of the buffer is the last one
46 * @throws IOException
47 */
48 void addContent(ByteBuf buffer, boolean last) throws IOException;
49
50 /**
51 * Set the content from the file (erase any previous data)
52 *
53 * @param file
54 * must be not null
55 * @throws IOException
56 */
57 void setContent(File file) throws IOException;
58
59 /**
60 * Set the content from the inputStream (erase any previous data)
61 *
62 * @param inputStream
63 * must be not null
64 * @throws IOException
65 */
66 void setContent(InputStream inputStream) throws IOException;
67
68 /**
69 *
70 * @return True if the InterfaceHttpData is completed (all data are stored)
71 */
72 boolean isCompleted();
73
74 /**
75 * Returns the size in byte of the InterfaceHttpData
76 *
77 * @return the size of the InterfaceHttpData
78 */
79 long length();
80
81 /**
82 * Deletes the underlying storage for a file item, including deleting any
83 * associated temporary disk file.
84 */
85 void delete();
86
87 /**
88 * Returns the contents of the file item as an array of bytes.
89 *
90 * @return the contents of the file item as an array of bytes.
91 * @throws IOException
92 */
93 byte[] get() throws IOException;
94
95 /**
96 * Returns the content of the file item as a ByteBuf
97 *
98 * @return the content of the file item as a ByteBuf
99 * @throws IOException
100 */
101 ByteBuf getByteBuf() throws IOException;
102
103 /**
104 * Returns a ChannelBuffer for the content from the current position with at
105 * most length read bytes, increasing the current position of the Bytes
106 * read. Once it arrives at the end, it returns an EMPTY_BUFFER and it
107 * resets the current position to 0.
108 *
109 * @return a ChannelBuffer for the content from the current position or an
110 * EMPTY_BUFFER if there is no more data to return
111 */
112 ByteBuf getChunk(int length) throws IOException;
113
114 /**
115 * Returns the contents of the file item as a String, using the default
116 * character encoding.
117 *
118 * @return the contents of the file item as a String, using the default
119 * character encoding.
120 * @throws IOException
121 */
122 String getString() throws IOException;
123
124 /**
125 * Returns the contents of the file item as a String, using the specified
126 * charset.
127 *
128 * @param encoding
129 * the charset to use
130 * @return the contents of the file item as a String, using the specified
131 * charset.
132 * @throws IOException
133 */
134 String getString(Charset encoding) throws IOException;
135
136 /**
137 * Set the Charset passed by the browser if defined
138 *
139 * @param charset
140 * Charset to set - must be not null
141 */
142 void setCharset(Charset charset);
143
144 /**
145 * Returns the Charset passed by the browser or null if not defined.
146 *
147 * @return the Charset passed by the browser or null if not defined.
148 */
149 Charset getCharset();
150
151 /**
152 * A convenience getMethod to write an uploaded item to disk. If a previous one
153 * exists, it will be deleted. Once this getMethod is called, if successful,
154 * the new file will be out of the cleaner of the factory that creates the
155 * original InterfaceHttpData object.
156 *
157 * @param dest
158 * destination file - must be not null
159 * @return True if the write is successful
160 * @throws IOException
161 */
162 boolean renameTo(File dest) throws IOException;
163
164 /**
165 * Provides a hint as to whether or not the file contents will be read from
166 * memory.
167 *
168 * @return True if the file contents is in memory.
169 */
170 boolean isInMemory();
171
172 /**
173 *
174 * @return the associated File if this data is represented in a file
175 * @exception IOException
176 * if this data is not represented by a file
177 */
178 File getFile() throws IOException;
179
180 @Override
181 HttpData copy();
182
183 @Override
184 HttpData duplicate();
185
186 @Override
187 HttpData retain();
188
189 @Override
190 HttpData retain(int increment);
191 }