@ChannelHandler.Sharable public class StringDecoder extends MessageToMessageDecoder<io.netty.buffer.ByteBuf,String>
ByteBuf
into a String
. Please
note that this decoder must be used with a proper FrameDecoder
such as DelimiterBasedFrameDecoder
if you are using a stream-based
transport such as TCP/IP. A typical setup for a text-based line protocol
in a TCP/IP socket would be:
and then you can use aChannelPipeline
pipeline = ...; // Decoders pipeline.addLast("frameDecoder", newDelimiterBasedFrameDecoder
(80,Delimiters.lineDelimiter()
)); pipeline.addLast("stringDecoder", newStringDecoder
(CharsetUtil.UTF_8)); // Encoder pipeline.addLast("stringEncoder", newStringEncoder
(CharsetUtil.UTF_8));
String
instead of a ByteBuf
as a message:
void messageReceived(ChannelHandlerContext
ctx,MessageEvent
e) { String msg = (String) e.getMessage(); ch.write("Did you say '" + msg + "'?\n"); }
Constructor and Description |
---|
StringDecoder()
Creates a new instance with the current system character set.
|
StringDecoder(Charset charset)
Creates a new instance with the specified character set.
|
Modifier and Type | Method and Description |
---|---|
String |
decode(io.netty.channel.ChannelHandlerContext ctx,
io.netty.buffer.ByteBuf msg) |
boolean |
isDecodable(Object msg)
Returns
true if and only if the specified message can be decoded by this decoder. |
inboundBufferUpdated, newInboundBuffer
afterAdd, afterRemove, beforeAdd, beforeRemove, channelActive, channelInactive, channelRegistered, channelUnregistered, exceptionCaught, userEventTriggered
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
public StringDecoder()
public StringDecoder(Charset charset)
public boolean isDecodable(Object msg) throws Exception
MessageToMessageDecoder
true
if and only if the specified message can be decoded by this decoder.isDecodable
in class MessageToMessageDecoder<io.netty.buffer.ByteBuf,String>
msg
- the messageException
Copyright © 2008-2012 The Netty Project. All Rights Reserved.