Package org.hpi.server

Source Code of org.hpi.server.ServerBridge$ServerSocketManager

/**
*
*/
package org.hpi.server;

import java.io.IOException;
import java.net.ServerSocket;

import org.apache.log4j.Logger;
import org.hpi.common.HPIConstants;
import org.simplestructruedata.data.SSDContextManager.SSDRootObject;
import org.simplestructruedata.entities.SSDObjectNode;

/**
* @author Jean Villete
*
*/
public class ServerBridge {
 
  private static final Logger   log = Logger.getLogger(ServerBridge.class.getName());
 
  static final long        TIME_CHECK_SHUTDOWN = 1000 * 5;
  static boolean          SHUTDOWN = false;

  public ServerBridge() { }
 
  public void turnup(SSDRootObject ssdSettingsData) throws InterruptedException, IOException {
    log.info("Turning the ServerBridge UP.");
   
    // first load to invokers SSD files
    SSDObjectNode ssdConfiguration = ssdSettingsData.getNode(HPIConstants.CONFIGURATIONS_CONFIG_SERVER);
   
    // instantiating and loading the server socket to new thread manager
    int portNumber = Integer.parseInt(ssdConfiguration.getLeaf(HPIConstants.CONFIGURATIONS_PORT_NUMBER).getValue());
    if (portNumber <= 0) {
      throw new IllegalStateException("The port number must be a valid number greater than 0.");
    }
    ServerSocket serverSocket = new ServerSocket(portNumber);
    ServerSocketManager serverSocketManager = new ServerSocketManager(serverSocket);
    serverSocketManager.start();
   
    while (!SHUTDOWN) {
      Thread.sleep(TIME_CHECK_SHUTDOWN);
    }
   
    log.info("Turning the ServerBridge DOWN.");
    serverSocketManager.interrupt();
    serverSocket.close();
  }
 
  private class ServerSocketManager extends Thread {
   
    private ServerSocket serverSocket = null;
   
    ServerSocketManager(ServerSocket serverSocket) {
      super("ServerSocketManager");
      this.serverSocket = serverSocket;
    }
   
    @Override
    public void run() {
      try {
        boolean listening = true;
        while (listening) {
          new HPIServerImplProtocol(this.serverSocket.accept()).start();
        }
      } catch (IOException e) {
        throw new RuntimeException(e);
      }
    }
  }
 
}
TOP

Related Classes of org.hpi.server.ServerBridge$ServerSocketManager

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.