Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.rmb.randomnodatabase.taskmanagement;
- import java.io.BufferedReader;
- import java.io.IOException;
- import java.io.InputStreamReader;
- import java.io.PrintWriter;
- import java.net.ServerSocket;
- import java.net.Socket;
- /**
- * Listen for stop signal and set {@link #isActive()} to false.
- *
- * See: http://bit.ly/1oKSnHu
- *
- */
- public final class StopListener extends Thread {
- /** Default port to listen to. */
- public static final int DEFAULT_PORT = 7;
- /** Default stop signal. */
- public static final String STOP_SIGNAL = "stop signal sent";
- /** Port to listen at. */
- private final int port;
- /** True until stop signal is received. */
- private boolean active = true;
- /**
- * Record incoming message here, if something other than STOP comes through.
- */
- private final StringBuilder message;
- /**
- * Create listener with custom port.
- *
- * @param thePort
- * port to listen at
- */
- public StopListener(final int thePort) {
- port = thePort;
- message = new StringBuilder();
- }
- /**
- * Create listener with default port.
- */
- public StopListener() {
- this(DEFAULT_PORT);
- }
- @Override
- public void run() {
- try (ServerSocket serverSocket = new ServerSocket(port);
- Socket clientSocket = serverSocket.accept();
- PrintWriter out =
- new PrintWriter(clientSocket.getOutputStream(), true);
- BufferedReader in =
- new BufferedReader(new InputStreamReader(
- clientSocket.getInputStream()));) {
- String inputLine;
- while ((inputLine = in.readLine()) != null) {
- message.append(inputLine);
- out.println("Stop signal received.");
- active = false;
- break;
- }
- } catch (IOException e) {
- System.out.println("Exception caught when trying to listen on port ["
- + port + "] or listening for a connection");
- System.out.println(e.getMessage());
- }
- }
- /**
- * @return true until stop signal is received. False when stop signal was
- * received.
- */
- public boolean isActive() {
- return active;
- }
- /**
- * @return message delivered to this listener by client.
- */
- public String getMessage() {
- return message.toString();
- }
- /**
- * Test listener.
- *
- * @param args
- * not used.
- */
- public static void main(final String[] args) {
- StopListener listener = new StopListener();
- System.out.println("Listening now - listener.isActive() ["
- + listener.isActive() + "].");
- listener.start();
- try {
- listener.join();
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- System.out.println("Stopped - listener.isActive() ["
- + listener.isActive() + "].");
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement