1 | /* |
2 | * @(#) $Id: NetCatProtocolHandler.java 264677 2005-08-30 02:44:35Z trustin $ |
3 | * |
4 | * Copyright 2004 The Apache Software Foundation |
5 | * |
6 | * Licensed under the Apache License, Version 2.0 (the "License"); |
7 | * you may not use this file except in compliance with the License. |
8 | * You may obtain a copy of the License at |
9 | * |
10 | * http://www.apache.org/licenses/LICENSE-2.0 |
11 | * |
12 | * Unless required by applicable law or agreed to in writing, software |
13 | * distributed under the License is distributed on an "AS IS" BASIS, |
14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
15 | * See the License for the specific language governing permissions and |
16 | * limitations under the License. |
17 | * |
18 | */ |
19 | package org.apache.mina.examples.netcat; |
20 | |
21 | import org.apache.mina.common.ByteBuffer; |
22 | import org.apache.mina.common.IdleStatus; |
23 | import org.apache.mina.io.IoHandler; |
24 | import org.apache.mina.io.IoHandlerAdapter; |
25 | import org.apache.mina.io.IoSession; |
26 | |
27 | /** |
28 | * {@link IoHandler} implementation for NetCat client. This class extended |
29 | * {@link IoHandlerAdapter} for convenience. |
30 | * |
31 | * @author Trustin Lee (trustin@apache.org) |
32 | * @version $Rev: 264677 $, $Date: 2005-08-30 11:44:35 +0900 $, |
33 | */ |
34 | public class NetCatProtocolHandler extends IoHandlerAdapter |
35 | { |
36 | public void sessionOpened( IoSession session ) |
37 | { |
38 | // Set reader idle time to 10 seconds. |
39 | // sessionIdle(...) method will be invoked when no data is read |
40 | // for 10 seconds. |
41 | session.getConfig().setIdleTime( IdleStatus.READER_IDLE, 10 ); |
42 | } |
43 | |
44 | public void sessionClosed( IoSession session ) |
45 | { |
46 | // Print out total number of bytes read from the remote peer. |
47 | System.err.println( "Total " + session.getReadBytes() + " byte(s)" ); |
48 | } |
49 | |
50 | public void sessionIdle( IoSession session, IdleStatus status ) |
51 | { |
52 | // Close the connection if reader is idle. |
53 | if( status == IdleStatus.READER_IDLE ) |
54 | session.close(); |
55 | } |
56 | |
57 | public void dataRead( IoSession session, ByteBuffer buf ) |
58 | { |
59 | // Print out read buffer content. |
60 | while( buf.hasRemaining() ) |
61 | { |
62 | System.out.print( ( char ) buf.get() ); |
63 | } |
64 | System.out.flush(); |
65 | } |
66 | } |