A following question. If my ConnectionMessagHandler is writing to the IoSession back to the connection (which it appears to be doing so), then do I need a message handler for the SimpleRequestPacket. (As I don't intend to do anything with it)?
How can I prevent the message being handled by the DemuxingIoHandler? On 1 April 2014 07:41, aidan.diffey <[email protected]> wrote: > 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 > >
