javadoc
This commit is contained in:
		
							parent
							
								
									1d9beb6b7d
								
							
						
					
					
						commit
						c9aed1affd
					
				| 
						 | 
					@ -5,6 +5,11 @@ import java.io.IOException;
 | 
				
			||||||
import java.net.SocketException;
 | 
					import java.net.SocketException;
 | 
				
			||||||
import java.util.Scanner;
 | 
					import java.util.Scanner;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * This abstract class is the superclass for ClientConnectionHandler and ServerConnectionHandler
 | 
				
			||||||
 | 
					 * It offers the DATA_TYPE Strings and a {@link State} enum for all valid connection states.
 | 
				
			||||||
 | 
					 * Shared methods are implemented in this class aswell {@link ConnectionHandler#sendData(String, String, String, String)} {@link ConnectionHandler#processData(Scanner, StringBuilder, StringBuilder, StringBuilder, StringBuilder)}
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
public abstract class ConnectionHandler {
 | 
					public abstract class ConnectionHandler {
 | 
				
			||||||
    private NetworkHandler.NetworkConnection<String> connection;
 | 
					    private NetworkHandler.NetworkConnection<String> connection;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -18,38 +23,77 @@ public abstract class ConnectionHandler {
 | 
				
			||||||
    public static final String USER_NONE = "";
 | 
					    public static final String USER_NONE = "";
 | 
				
			||||||
    public static final String USER_ALL = "*";
 | 
					    public static final String USER_ALL = "*";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // State of the connection
 | 
				
			||||||
    public enum State {
 | 
					    public enum State {
 | 
				
			||||||
        NEW, CONFIRM_CONNECT, CONNECTED, CONFIRM_DISCONNECT, DISCONNECTED, ERROR;
 | 
					        NEW, CONFIRM_CONNECT, CONNECTED, CONFIRM_DISCONNECT, DISCONNECTED, ERROR;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @return {@link ConnectionHandler#DATA_TYPE_CONNECT}
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
    public static String getDataTypeConnect() {
 | 
					    public static String getDataTypeConnect() {
 | 
				
			||||||
        return DATA_TYPE_CONNECT;
 | 
					        return DATA_TYPE_CONNECT;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @return {@link ConnectionHandler#DATA_TYPE_CONFIRM}
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
    public static String getDataTypeConfirm() {
 | 
					    public static String getDataTypeConfirm() {
 | 
				
			||||||
        return DATA_TYPE_CONFIRM;
 | 
					        return DATA_TYPE_CONFIRM;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @return {@link ConnectionHandler#DATA_TYPE_DISCONNECT}
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
    public static String getDataTypeDisconnect() {
 | 
					    public static String getDataTypeDisconnect() {
 | 
				
			||||||
        return DATA_TYPE_DISCONNECT;
 | 
					        return DATA_TYPE_DISCONNECT;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @return {@link ConnectionHandler#DATA_TYPE_MESSAGE
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
    public static String getDataTypeMessage() {
 | 
					    public static String getDataTypeMessage() {
 | 
				
			||||||
        return DATA_TYPE_MESSAGE;
 | 
					        return DATA_TYPE_MESSAGE;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @return {@link ConnectionHandler#DATA_TYPE_ERROR}
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
    public static String getDataTypeError() {
 | 
					    public static String getDataTypeError() {
 | 
				
			||||||
        return DATA_TYPE_ERROR;
 | 
					        return DATA_TYPE_ERROR;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @return {@link NetworkHandler.NetworkConnection}
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
    public NetworkHandler.NetworkConnection<String> getConnection() {
 | 
					    public NetworkHandler.NetworkConnection<String> getConnection() {
 | 
				
			||||||
        return connection;
 | 
					        return connection;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * This method sets the NetworkConnection used for the server <-> client connection
 | 
				
			||||||
 | 
					     * @param connection NetworkConnection used for the server <-> client connection
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
    protected void setConnection(NetworkHandler.NetworkConnection<String> connection) {
 | 
					    protected void setConnection(NetworkHandler.NetworkConnection<String> connection) {
 | 
				
			||||||
        this.connection = connection;
 | 
					        this.connection = connection;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * This method reads the data when a ConnectionHandler recieves it. It tries to read out the sender, reciever, type and payload.
 | 
				
			||||||
 | 
					     * If the data does not contain the expected number of lines, it throws a {@link ChatProtocolException}
 | 
				
			||||||
 | 
					     * @param scanner to read data
 | 
				
			||||||
 | 
					     * @param sender of the data
 | 
				
			||||||
 | 
					     * @param reciever for the data
 | 
				
			||||||
 | 
					     * @param type of data
 | 
				
			||||||
 | 
					     * @param payload the data sent
 | 
				
			||||||
 | 
					     * @throws ChatProtocolException if the data does not contain the expected number of lines
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
    protected void processData(Scanner scanner, StringBuilder sender, StringBuilder reciever, StringBuilder type, StringBuilder payload) throws ChatProtocolException {
 | 
					    protected void processData(Scanner scanner, StringBuilder sender, StringBuilder reciever, StringBuilder type, StringBuilder payload) throws ChatProtocolException {
 | 
				
			||||||
        // parse data content
 | 
					        // parse data content
 | 
				
			||||||
        if (scanner.hasNextLine()) {
 | 
					        if (scanner.hasNextLine()) {
 | 
				
			||||||
| 
						 | 
					@ -72,6 +116,13 @@ public abstract class ConnectionHandler {
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * This method gets called to send data via the socket defined in the {@link NetworkHandler.NetworkConnection}
 | 
				
			||||||
 | 
					     * @param sender of the data
 | 
				
			||||||
 | 
					     * @param receiver of the data
 | 
				
			||||||
 | 
					     * @param type of the data
 | 
				
			||||||
 | 
					     * @param payload of the data
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
    protected void sendData(String sender, String receiver, String type, String payload) {
 | 
					    protected void sendData(String sender, String receiver, String type, String payload) {
 | 
				
			||||||
        if (connection.isAvailable()) {
 | 
					        if (connection.isAvailable()) {
 | 
				
			||||||
            new StringBuilder();
 | 
					            new StringBuilder();
 | 
				
			||||||
| 
						 | 
					@ -82,7 +133,7 @@ public abstract class ConnectionHandler {
 | 
				
			||||||
                    .append(payload+"\n")
 | 
					                    .append(payload+"\n")
 | 
				
			||||||
                    .toString();
 | 
					                    .toString();
 | 
				
			||||||
            try {
 | 
					            try {
 | 
				
			||||||
                getConnection().send(data);
 | 
					                connection.send(data);
 | 
				
			||||||
            } catch (SocketException e) {
 | 
					            } catch (SocketException e) {
 | 
				
			||||||
                System.err.println("Connection closed: " + e.getMessage());
 | 
					                System.err.println("Connection closed: " + e.getMessage());
 | 
				
			||||||
            } catch (EOFException e) {
 | 
					            } catch (EOFException e) {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue