View Javadoc

1   package net.sourceforge.simplegamenet.framework.transport;
2   
3   import java.io.IOException;
4   import java.io.ObjectInputStream;
5   import java.io.ObjectOutputStream;
6   import java.net.Socket;
7   
8   public class ClientConnection extends Connection {
9   
10      private ClientModem clientModem;
11  
12      public ClientConnection(ClientModem clientModem, Socket socket,
13                       ObjectInputStream objectInputStream,
14                       ObjectOutputStream objectOutputStream) {
15          super(socket, objectInputStream, objectOutputStream);
16          this.clientModem = clientModem;
17      }
18  
19      public void run() {
20          while (active) {
21              try {
22                  Packet packet = (Packet) objectInputStream.readObject();
23                  if (active) {
24                      clientModem.processPacketInEventThread(packet);
25                  }
26              } catch (ClassNotFoundException exception) {
27                  active = false;
28                  clientModem.processDisconnectionInEventThread();
29              } catch (ClassCastException exception) {
30                  active = false;
31                  clientModem.processDisconnectionInEventThread();
32              } catch (IOException exception) {
33                  active = false;
34                  clientModem.processDisconnectionInEventThread();
35              }
36          }
37      }
38  
39      public void sendPacket(Packet packet) {
40          if (active) {
41              try {
42                  objectOutputStream.writeObject(packet);
43              } catch (IOException exception) {
44                  active = false;
45                  clientModem.processDisconnectionInEventThread();
46              }
47          }
48      }
49  
50  }