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