// Copyright (C) 2003-2009 by Object Mentor, Inc. All rights reserved.
// Released under the terms of the CPL Common Public License version 1.0.
package fitnesse.testutil;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.SocketException;
import fitnesse.http.Request;
import fitnesse.responders.run.SocketDealer;
public class FitSocketReceiver {
public static int DEFAULT_SOCKET = 9123;
public ServerSocket serverSocket;
public Socket socket;
public int port = DEFAULT_SOCKET;
public SocketDealer dealer;
public FitSocketReceiver(int port, SocketDealer dealer) {
this.port = port;
this.dealer = dealer;
}
public int receiveSocket() throws Exception {
serverSocket = new ServerSocket(port);
port = serverSocket.getLocalPort();
new Thread() {
public void run() {
try {
socket = serverSocket.accept();
serverSocket.close();
Request request = new Request(socket.getInputStream());
request.parse();
int ticket = Integer.parseInt(request.getInput("ticket").toString());
dealSocket(ticket);
}
catch (SocketException se) {
}
catch (Exception e) {
e.printStackTrace();
}
}
}.start();
return port;
}
protected void dealSocket(int ticket) throws Exception {
dealer.dealSocketTo(ticket, new SimpleSocketDoner(socket));
}
public void close() throws Exception {
if (serverSocket != null)
serverSocket.close();
if (socket != null)
socket.close();
}
}