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]>*

Reply via email to