Drupal: částečně funkční – jde stáhnout zprávy s předmětem a textem.
3 * see AUTHORS for the list of contributors
5 * This program is free software: you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation, either version 3 of the License, or
8 * (at your option) any later version.
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
15 * You should have received a copy of the GNU General Public License
16 * along with this program. If not, see <http://www.gnu.org/licenses/>.
19 package org.sonews.daemon;
21 import java.nio.ByteBuffer;
22 import java.nio.CharBuffer;
23 import java.nio.channels.ClosedChannelException;
24 import java.nio.charset.Charset;
25 import java.nio.charset.CharsetEncoder;
26 import java.nio.charset.CoderResult;
29 * Encodes a line to buffers using the correct charset.
30 * @author Christian Lins
36 private CharBuffer characters;
37 private Charset charset;
40 * Constructs new LineEncoder.
44 public LineEncoder(CharBuffer characters, Charset charset)
46 this.characters = characters;
47 this.charset = charset;
51 * Encodes the characters of this instance to the given ChannelLineBuffers
52 * using the Charset of this instance.
54 * @throws java.nio.channels.ClosedChannelException
56 public void encode(ChannelLineBuffers buffer)
57 throws ClosedChannelException
59 CharsetEncoder encoder = charset.newEncoder();
60 while (characters.hasRemaining()) {
61 ByteBuffer buf = ChannelLineBuffers.newLineBuffer();
62 assert buf.position() == 0;
63 assert buf.capacity() >= 512;
65 CoderResult res = encoder.encode(characters, buf, true);
67 // Set limit to current position and current position to 0;
68 // means make ready for read from buffer
70 buffer.addOutputBuffer(buf);
72 if (res.isUnderflow()) // All input processed