Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
bgColor#ccccff
class SocketReader implements Runnable {
  private static ThreadLocal<Socket> connectionHolder = new ThreadLocal<Socket>() {
    Socket socket = null;
    @Override public Socket initialValue() {		
      try {
        socket = new Socket("defaultHost", "defaultPort");25); // 25 is the default port to connect to
      } catch (UnknownHostException e) {
        // Forward to handler	
      } catch (IOException e) {
        // Forward to handler
      }
      return socket;
    }
	
    @Override public void set(Socket sock) {
      if(sock == null) { // Shuts down socket when null value is passed 	
        try {
  	  socket.close();
        } catch (IOException e) {
 	  // Forward to handler	
        }
      } else {
        socket = sock; // Assigns Socket with caller specified hostname and port
      }
    }
  };

  public static Socket getSocketConnection() {
    return connectionHolder.get();
  }

  public static void shutdownSocket() { // Allows client to close socket anytime
    connectionHolder.set(null);
  }

  public void run() {
    Socket socket = getSocketConnection();
    // Do some useful work
  }
}

...