Advertisement
msangel

console helper

Jan 18th, 2013
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5 2.57 KB | None | 0 0
  1. package ua.org.msangel.r;
  2.  
  3. import java.io.IOException;
  4.  
  5. public class ServerManager {
  6.     private static final int DEFAULT_PORT = 8080;
  7.     private int port;
  8.  
  9.     public static String newline = System.getProperty("line.separator");
  10.     Server serverThread;
  11.  
  12.     public ServerManager() {
  13.         this(DEFAULT_PORT);
  14.     }
  15.  
  16.     public ServerManager(int port) {
  17.         this.port = port;
  18.         serverThread = new Server(port);
  19.     }
  20.  
  21.     synchronized private void startServer() {
  22.  
  23.         if (serverThread.isInterrupted()
  24.                 || serverThread.getState() == Thread.State.TERMINATED) {
  25.             serverThread = new Server(this.port);
  26.         }
  27.  
  28.         if (serverThread.getState() == Thread.State.NEW) {
  29.             serverThread.start();
  30.         } else {
  31.             // System.out.println("Unknow thread state:"+serverThread.getState());
  32.             // Unknow thread state:TIMED_WAITING
  33.             // if already run
  34.         }
  35.     }
  36.  
  37.     synchronized private void stopServer() {
  38.         if (serverThread.isAlive()) {
  39.             serverThread.disconnectAll();
  40.             serverThread.interrupt();
  41.             serverThread.stop();
  42.         }
  43.     }
  44.  
  45.     synchronized private void restartServer() {
  46.         this.stopServer();
  47.         this.startServer();
  48.     }
  49.  
  50.     synchronized private String getServerStatus() {
  51.         return serverThread.getStatus();
  52.     }
  53.  
  54.     public void startMonitor() {
  55.         char c = '0';
  56.         while (c != '5') {
  57.             System.out.println("Available actions:" + newline + //
  58.                     "1: Status" + newline + //
  59.                     "2: Start" + newline + //
  60.                     "3: Stop" + newline + //
  61.                     "4: Restart" + newline + //
  62.                     "5: Exit");
  63.             try {
  64.                 int tmp = System.in.read();
  65.                 while (System.in.available() > 0) {
  66.                     System.in.read();
  67.                 }
  68.                 c = (char) tmp;
  69.  
  70.             } catch (IOException e) {
  71.                 e.printStackTrace();
  72.             }
  73.             switch (c) {
  74.             case '1':
  75.                 System.out.println(this.getServerStatus());
  76.                 break;
  77.             case '2':
  78.                 this.startServer();
  79.                 break;
  80.             case '3':
  81.                 this.stopServer();
  82.                 break;
  83.             case '4':
  84.                 this.restartServer();
  85.                 break;
  86.             case '5':
  87.                 System.out.println("exiting start");
  88.                 break;
  89.             }
  90.         }
  91.         this.stopServer();
  92.     }
  93.  
  94.     public static void main(String[] args) {
  95.         ServerManager serverManager = new ServerManager();
  96.         //serverManager.startMonitor();
  97.        
  98.         serverManager.test();
  99.     }
  100.  
  101.     private void test() {
  102.         System.out.println("begin of program");
  103.         this.startServer();
  104.         try {
  105.             Thread.sleep(10000);
  106.         } catch (InterruptedException e) {
  107.             e.printStackTrace();
  108.         }
  109.         System.out.println("end of sleep");
  110.         this.serverThread.interrupt();
  111.         System.out.println("interrupt done ");
  112.         this.serverThread.disconnectAll();
  113.         System.out.println("set to null");
  114.         System.out.println("end of program");
  115.     }
  116. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement