1
2
3
4 package org.apache.mina.examples.tennis;
5
6 import org.apache.mina.common.IoHandler;
7 import org.apache.mina.common.IoHandlerAdapter;
8 import org.apache.mina.common.IoSession;
9
10 /***
11 * A {@link IoHandler} implementation which plays a tennis game.
12 *
13 * @author The Apache Directory Project (dev@directory.apache.org)
14 * @version $Rev: 355016 $, $Date: 2005-12-08 16:00:30 +0900 (Thu, 08 Dec 2005) $
15 */
16 public class TennisPlayer extends IoHandlerAdapter
17 {
18 private static int nextId = 0;
19
20 /*** Player ID **/
21 private final int id = nextId++;
22
23 public void sessionOpened( IoSession session )
24 {
25 System.out.println( "Player-" + id + ": READY" );
26 }
27
28 public void sessionClosed( IoSession session )
29 {
30 System.out.println( "Player-" + id + ": QUIT" );
31 }
32
33 public void messageReceived( IoSession session, Object message )
34 {
35 System.out.println( "Player-" + id + ": RCVD " + message );
36
37 TennisBall ball = ( TennisBall ) message;
38
39
40 ball = ball.stroke();
41
42 if( ball.getTTL() > 0 )
43 {
44
45 session.write( ball );
46 }
47 else
48 {
49
50 System.out.println( "Player-" + id + ": LOSE" );
51 session.close();
52 }
53 }
54
55 public void messageSent( IoSession session, Object message )
56 {
57 System.out.println( "Player-" + id + ": SENT " + message );
58 }
59
60 public void exceptionCaught( IoSession session, Throwable cause )
61 {
62 cause.printStackTrace();
63 session.close();
64 }
65 }