I didn't see why NOT if in your client side only single thread sending the
message.
On 10/22/07, tiandike <[EMAIL PROTECTED]> wrote:
>
>
> I modified the example of echoserver
>
> in my code I disable the default ThreadModel setting and configure the
> number of I/O processor thread.
>
>
> I don't understand why my client can receive the results in order?
> Thanks!
>
> the code and the result is below:
>
> /////////////////////////////////
> the main class is :
> public class Main {
> /** Choose your favorite port number. */
> private static final int PORT = 8080;
>
> public static void main(String[] args) throws Exception {
> int num = Runtime.getRuntime().availableProcessors() * 3;
> IoAcceptor acceptor = new SocketAcceptor(num,
> Executors.newCachedThreadPool());
> IoAcceptorConfig config = new SocketAcceptorConfig();
> config.setThreadModel(ThreadModel.MANUAL);
> DefaultIoFilterChainBuilder chain = config.getFilterChain();
> chain.addLast("threadPool", new
> ExecutorFilter(Executors.newCachedThreadPool()));
>
> acceptor.bind(new InetSocketAddress(PORT), new
> EchoProtocolHandler1(),
> config);
> System.out.println("Listening on port " + PORT);
> }
>
> }
>
>
> /////////////////////////////////
> EchoProtocolHandler1.java
>
> public class EchoProtocolHandler1 extends IoHandlerAdapter {
> private static Random r=new Random();
> private static final Logger log = LoggerFactory
> .getLogger(EchoProtocolHandler.class);
>
>
>
> public void exceptionCaught(IoSession session, Throwable cause) {
> cause.printStackTrace();
> session.close();
> }
>
> public void messageReceived(IoSession session, Object message)
> throws Exception {
> if (!(message instanceof ByteBuffer)) {
> return;
> }
> Thread.currentThread().sleep(r.nextInt(1000));
>
> ByteBuffer rb = (ByteBuffer) message;
> // Write the received data back to remote peer
> ByteBuffer wb = ByteBuffer.allocate(rb.remaining());
> wb.put(rb);
> wb.flip();
>
>
> session.write(wb);
> }
>
> }
>
> ////////////////////////////////////////////
> and my client handler:
>
> public class ClientHandler extends IoHandlerAdapter {
>
> private int num=0;
>
> public ClientHandler(int num){
> this.num=num;
> }
>
>
> @Override
> public void sessionOpened(IoSession session) throws Exception {
>
> for (int i = 0; i < num; i++) {
> session.write(String.valueOf(i));
>
> }
> }
> @Override
> public void messageReceived(IoSession session, Object message)
> throws Exception {
>
> System.out.println("messageReceived:"+message);
> }
>
>
> }
>
>
> //////////////////////////////////////////////
> and ClientMain :
>
> public class ClientMain {
>
> private static final String HOSTNAME = "localhost";
> private static final int PORT = 8080;
>
> /**
> * @param args
> */
> public static void main(String[] args) {
> InetSocketAddress socketAddress = new
> InetSocketAddress(HOSTNAME, PORT);
> IoServiceConfig config = new SocketConnectorConfig();
> config.setThreadModel(ThreadModel.MANUAL);
> DefaultIoFilterChainBuilder chain = config.getFilterChain
> ();
>
> chain.addLast("threadPool", new
> ExecutorFilter(Executors.newCachedThreadPool()));
>
> int num=100;
>
> SocketConnector connector=new SocketConnector();
>
> ConnectFuture future = connector.connect(new InetSocketAddress(
> HOSTNAME, PORT), new ClientHandler(num), config);
>
> future.join();
>
>
> }
>
> }
> ///////////////////////////////////////////////////////////////
> in eclipse console:
>
> messageReceived:0
> messageReceived:1
> messageReceived:2
> messageReceived:3
> messageReceived:4
> messageReceived:5
> messageReceived:6
> messageReceived:7
> messageReceived:8
> messageReceived:9
> messageReceived:10
> messageReceived:11
> messageReceived:12
> messageReceived:13
> messageReceived:14
> messageReceived:15
> messageReceived:16
> messageReceived:17
> messageReceived:18
> messageReceived:19
> messageReceived:20
> messageReceived:21
> messageReceived:22
> messageReceived:23
> messageReceived:24
> ........
> messageReceived:99
>
> --
> View this message in context:
> http://www.nabble.com/why-client-received-message-in-order--tf4668688s16868.html#a13336726
> Sent from the Apache MINA Support Forum mailing list archive at Nabble.com
> .
>
>