2 * Created on Aug 21, 2003
10 import java.io.IOException;
11 import java.net.ServerSocket;
12 import java.net.Socket;
14 import org.apache.log4j.Logger;
17 * Clients2KernelServer: runs in its own thread and handles the communication
18 * from clients to the kernel
22 public class Clients2KernelServer implements Runnable {
24 private ServerSocket server_ = null;
26 private BridgeMain bridge_;
28 static Logger logger_ = Logger.getLogger(Clients2KernelServer.class
32 * Constructor: create a new Clients2KernelServer
36 public Clients2KernelServer(BridgeMain bridge) {
37 logger_.warn("Clients2KernelServer: bridge_=" + bridge);
38 this.bridge_ = bridge;
42 * Listen on socket: Wait for clients to connect to bridge_, and once the
43 * connect, start a new ClientOutputWorker that sends the XML-output back to
46 public void listenSocket() {
50 server_ = new ServerSocket(bridge_.getSocketPort());
51 } catch (IOException e) {
52 bridge_.log(1, "Could not listen on port "
53 + bridge_.getSocketPort());
54 System.out.println("Could not listen on port "
55 + bridge_.getSocketPort());
60 //TODO id should be fetched from the BridgeMain:
61 //smallestFreeBridgeRmiID
62 //(so far: only one BridgeRMI)
64 socket = server_.accept(); // wait for client connections
65 bridge_.log(1, "connection received");
66 w = new ClientOutputWorker(id, socket, bridge_);
67 Thread t = new Thread(w, "java_bridge_clientworker" + id);
70 bridge_.log(1, "new Client accepted, id=" + id);
71 //TODO if to much load, start new kernel: e.g.
72 // bridge_.startNewKernel();
74 } catch (IOException e) {
75 bridge_.log(1, "Accept failed on port"
76 + bridge_.getSocketPort());
77 System.out.println("Accept failed on port"
78 + bridge_.getSocketPort());
79 //Quit program: could not connect to port
86 * This starts the Client2KernelServer thread
91 bridge_.log(1, "Clients2KernelServer: Cleaning up...");
94 } catch (IOException e) {
95 bridge_.log(1, "Could not close socket");
98 bridge_.log(1, "Done cleaning up");