View Javadoc

1   /*
2    * @(#) $Id: TennisPlayer.java 355016 2005-12-08 07:00:30Z trustin $
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          // Stroke: TTL decreases and PING/PONG state changes.
40          ball = ball.stroke();
41  
42          if( ball.getTTL() > 0 )
43          {
44              // If the ball is still alive, pass it back to peer.
45              session.write( ball );
46          }
47          else
48          {
49              // If the ball is dead, this player loses.
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  }