|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||
java.lang.Objectorg.apache.mina.protocol.codec.CumulativeProtocolDecoder
public abstract class CumulativeProtocolDecoder
A ProtocolDecoder that cumulates the content of received
buffers to a cumulative buffer to help users implement decoders.
If the received ByteBuffer is only a part of a message.
decoders should cumulate received buffers to make a message complete or
to postpone decoding until more buffers arrive.
Here is an example decoder that decodes a list of integers:
public class IntegerDecoder extends CumulativeProtocolDecoder {
public IntegerDecoder() {
super(4);
}
protected boolean doDecode(ProtocolSession session, ByteBuffer in,
ProtocolDecoderOutput out) throws ProtocolViolationException {
if (in.remaining() < 4) {
return false; // Cumulate remainder to decode later.
}
out.write(new Integer(in.getInt()));
// Decoded one integer; CumulativeProtocolDecoder will call me again,
// so I can decode as many integers as possible.
return true;
}
}
| Constructor Summary | |
|---|---|
protected |
CumulativeProtocolDecoder(int defaultCapacity)
Creates a new instance with the specified default capacity of cumulative buffer. |
| Method Summary | |
|---|---|
void |
decode(ProtocolSession session,
ByteBuffer in,
ProtocolDecoderOutput out)
Cumulates content of in into internal buffer and forwards decoding request to doDecode(ProtocolSession, ByteBuffer, ProtocolDecoderOutput). |
protected abstract boolean |
doDecode(ProtocolSession session,
ByteBuffer in,
ProtocolDecoderOutput out)
Implement this method to consume the specified cumulative buffer and decode its content into message(s). |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Constructor Detail |
|---|
protected CumulativeProtocolDecoder(int defaultCapacity)
| Method Detail |
|---|
public void decode(ProtocolSession session,
ByteBuffer in,
ProtocolDecoderOutput out)
throws ProtocolViolationException
doDecode(ProtocolSession, ByteBuffer, ProtocolDecoderOutput).
doDecode() is invoked repeatedly until it returns false
and the cumulative buffer is compacted after decoding ends.
decode in interface ProtocolDecoderjava.lang.IllegalStateException - if your doDecode() returned
true not consuming the cumulative buffer.
ProtocolViolationException - if the read data violated protocol
specification
protected abstract boolean doDecode(ProtocolSession session,
ByteBuffer in,
ProtocolDecoderOutput out)
throws ProtocolViolationException
in - the cumulative buffer
ProtocolViolationException - if cannot decode in.
|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||