Hi,
i created a game with mina 2.0.7
after days of playing without restarting the server all is going fine but i
am seeing some error like this:
org.apache.mina.filter.codec.ProtocolDecoderException:
java.lang.IllegalStateException: Current state = RESET, new state =
CODING_END (Hexdump: 3D 22 31 35 30 34 22 20 74 62 6C 3D 22 32 34 37 22 3E
3C 73 65 74 41 63 74 69 6F 6E 20 61 63 74 69 6F 6E 3D 22 66 6F 6C 64 22 20
70 6F 73 74 3D 22 30 2E 30 30 22 2F 3E 3C 2F 72 65 73 70 6F 6E 73 65 3E 00)
at
org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(ProtocolCodecFilter.java:242)
at
org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:417)
at
org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1200(DefaultIoFilterChain.java:47)
at
org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceived(DefaultIoFilterChain.java:765)
at
org.apache.mina.core.filterchain.IoFilterAdapter.messageReceived(IoFilterAdapter.java:109)
at
org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:417)
at
org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1200(DefaultIoFilterChain.java:47)
at
org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceived(DefaultIoFilterChain.java:765)
at
org.apache.mina.core.filterchain.IoFilterAdapter.messageReceived(IoFilterAdapter.java:109)
at
org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:417)
at
org.apache.mina.core.filterchain.DefaultIoFilterChain.fireMessageReceived(DefaultIoFilterChain.java:410)
at
org.apache.mina.core.polling.AbstractPollingIoProcessor.read(AbstractPollingIoProcessor.java:710)
at
org.apache.mina.core.polling.AbstractPollingIoProcessor.process(AbstractPollingIoProcessor.java:664)
at
org.apache.mina.core.polling.AbstractPollingIoProcessor.process(AbstractPollingIoProcessor.java:653)
at
org.apache.mina.core.polling.AbstractPollingIoProcessor.access$600(AbstractPollingIoProcessor.java:67)
at
org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.run(AbstractPollingIoProcessor.java:1124)
at
org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:64)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1146)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:679)
Caused by: java.lang.IllegalStateException: Current state = RESET, new
state = CODING_END
at
java.nio.charset.CharsetDecoder.throwIllegalStateException(CharsetDecoder.java:968)
at java.nio.charset.CharsetDecoder.decode(CharsetDecoder.java:554)
at
org.apache.mina.core.buffer.AbstractIoBuffer.getString(AbstractIoBuffer.java:1648)
at
com.pkr.codec.FlashCrossdomainDecoder.doDecode(FlashCrossdomainDecoder.java:30)
at
org.apache.mina.filter.codec.CumulativeProtocolDecoder.decode(CumulativeProtocolDecoder.java:176)
at
org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(ProtocolCodecFilter.java:232)
... 19 more
Did you ever seen that ?
I am using a this Decoder please tell me if it is ok
Thanks
package com.pkr.codec;
import java.nio.charset.Charset;
import java.nio.charset.CharsetDecoder;
import org.apache.mina.core.buffer.IoBuffer;
import org.apache.mina.core.session.IoSession;
import org.apache.mina.filter.codec.CumulativeProtocolDecoder;
import org.apache.mina.filter.codec.ProtocolDecoderOutput;
public class FlashCrossdomainDecoder extends CumulativeProtocolDecoder {
protected CharsetDecoder decoder;
public FlashCrossdomainDecoder() {
//decoder = Charset.forName("UTF-8").newDecoder();
decoder = Charset.defaultCharset().newDecoder();
}
@Override
protected boolean doDecode(IoSession session, IoBuffer in,
ProtocolDecoderOutput out) throws Exception {
int start = in.position();
while (in.hasRemaining()) {
byte current = in.get();
if (current == '\0') {
int position = in.position();
int limit = in.limit();
try {
in.position(start);
in.limit(position);
String res = (in.slice().getString(this.decoder));
out.write(res);
//String myres = res.trim();
} finally {
in.position(position);
in.limit(limit);
}
return true;
}
}
in.position(start);
return false;
}
}
Francesco
--
*[email protected] <[email protected]>*