Okay. So is there a built in class to handle the iobuffer class? If there is not how do I write the iobuffer (which wraps a byte array) to the iostream?
Sent from Samsung Mobile -------- Original message -------- From: Emmanuel Lécharny <[email protected]> Date: 31/03/2014 22:30 (GMT+00:00) To: [email protected] Subject: Re: DemuxingIoHandler No Handler found exception Le 3/31/14 5:44 PM, Aidan Diffey a écrit : > Hello. > > Thank you for the very swift reply. Seems like you haven't associated any handler with SimpleBuffer : this.socketAcceptor.getHandler()).addReceivedMessageHandler(ConnectionPacket.class, new ConnectionMessageHandler(); this.socketAcceptor.getHandler()).addSentMessageHandler(SimpleRequestPacket.class, new SimpleRequestHandler(); > > I am doing the following: > > ServerHandler.java > ============== > private IoAcceptor socketAcceptor; > > public void establishService() { > this.socketAcceptor = new NioSocketAcceptor(); > this.socketAcceptor.getFilterChain().addLast("ProtocolFilter", new > ProtocolCodecFilter(new PacketCodecFactory())); > this.socketAcceptor.setHandler(new DemuxingIoHandler()); > this.addInternalMessageHandlers(); > } > > private void addInternalMessageHandlers(){ > ((DemuxingIoHandler) > this.socketAcceptor.getHandler()).addReceivedMessageHandler(ConnectionPacket.class, > new ConnectionMessageHandler(); > > ((DemuxingIoHandler) > this.socketAcceptor.getHandler()).addSentMessageHandler(SimpleRequestPacket.class, > new SimpleRequestHandler(); > > } > > ConnectionMessageHandler.java > ==== > public class ConnectionMessageHandler implements > MessageHandler<ConnectionPacket>{ > @Override > public void handleMessage(IoSession session, ConnectionPacket message) > throws Exception{ > SimpleRequestPacket request = new SimpleRequestPacket(0xBAAC); > session.write(request); > } > } > > SimpleRequestPacket.java > ====== > public class SimpleRequestPacket{ > private int request > public SimpleRequestPacket(int request){ > this.request = request; > } > > public IoBuffer convertToByteData(){ > IoBuffer response = IoBuffer.allocate(4); > response.setInt(this.request); > response.flip(); > } > > } > > > > SimpleRequestHandler.java > ======== > public class SimpleRequestHandlerimplements > MessageHandler<SimpleRequestPacket> > > @Override > public void handleMessage(IoSession session, SimpleRequestPacket > message) throws Exception > { > session.write(message.convertToByteData()); > session.write(response); > } > > > On 31 March 2014 16:33, Emmanuel Lécharny <[email protected]> wrote: > >> Le 3/31/14 5:11 PM, Aidan Diffey a écrit : >>> Hello. >>> >>> I am new to using MINA and I have written an application that uses the >>> DemuxingIoHandler as the handler for an IOAcceptor. I have registed some >>> handlers for message recevied and message sent. >>> >>> One of my registed handlers (implementing MessageHandler) is responsible >>> for writing data back to the IoSession. I am doing this using an >> IoBuffer >>> in the following way: >>> >>> @Override >>> public void handleMessage(IoSession session, SimpleRequestPacket >>> message) throws Exception >>> { >>> IoBuffer response = IoBuffer.allocate(4); >>> response.setInt(0xBBAC); >>> response.flip(); >>> >>> session.write(response); >>> } >>> >>> >>> The issue I am having is that I am seeing the following message: >>> "org.apache.mina.core.session.UnknownMessageTypeException: No handler >> found >>> for message type: SimpleBuffer" >>> >>> Is there another out-of-the-box handler I can use for SimpleBuffers? >> You most certainly have an issue in the way you registred your handlers. >> >> can you provide the code that does that ? >> >> >> >> -- >> Regards, >> Cordialement, >> Emmanuel Lécharny >> www.iktek.com >> >> -- Regards, Cordialement, Emmanuel Lécharny www.iktek.com
