1 package net.sourceforge.backpedal.impl.server;
2
3 import net.mikehogan.veggie.exceptions.VeggieSystemException;
4 import net.sourceforge.backpedal.api.server.BackpedalServer;
5 import net.sourceforge.backpedal.api.server.ServerControl;
6 import net.sourceforge.backpedal.api.server.ServerRunnable;
7 import net.sourceforge.backpedal.impl.AbstractComponent;
8
9 import java.io.IOException;
10 import java.net.ServerSocket;
11
12 public class BackpedalServerImpl extends AbstractComponent implements BackpedalServer{
13 private final ServerControl control;
14 private final ServerRunnable serverRunnable;
15 private int port = 0;
16 private boolean configured = false;
17 private Thread serverThread = null;
18
19 public BackpedalServerImpl(ServerControl control, ServerRunnable serverRunnable) {
20 this.control = control;
21 this.serverRunnable = serverRunnable;
22 }
23
24 public void setPort(int port) {
25 this.port = port;
26 configured = true;
27 }
28
29 public void start() {
30 if (!configured) {
31 throw new IllegalStateException("Not configured");
32 }
33 if (serverThread == null) {
34 doStart();
35 } else {
36 throw new IllegalStateException("Server already started");
37 }
38 }
39
40 private void doStart() {
41 try {
42 serverRunnable.setServerControl(control);
43 serverRunnable.setServerSocket(new ServerSocket(port));
44 serverThread = new Thread(serverRunnable.getRunnable());
45 serverThread.start();
46 log().info("Backpedal server started on port " + port);
47 } catch (IOException e) {
48 throw new VeggieSystemException("Exception trying to start backpedal server", e);
49 }
50 }
51
52 public void stop() {
53 control.stopRunning();
54 serverThread.interrupt();
55 }
56 }
This page was automatically generated by Maven