content: package org.java_websocket.framing;
  
  import org.java_websocket.exceptions.InvalidDataException;
  import org.java_websocket.exceptions.InvalidFrameException;
  
  public interface CloseFrame extends Framedata {
  	/**
  	 * indicates a normal closure, meaning whatever purpose the
  	 * connection was established for has been fulfilled.
  	 */
  	public static final int NORMAL = 1000;
  	/**
  	 * 1001 indicates that an endpoint is "going away", such as a server
  	 * going down, or a browser having navigated away from a page.
  	 */
  	public static final int GOING_AWAY = 1001;
  	/**
  	 * 1002 indicates that an endpoint is terminating the connection due
  	 * to a protocol error.
  	 */
  	public static final int PROTOCOL_ERROR = 1002;
  	/**
  	 * 1003 indicates that an endpoint is terminating the connection
  	 * because it has received a type of data it cannot accept (e.g. an
  	 * endpoint that understands only text data MAY send this if it
  	 * receives a binary message).
  	 */
  	public static final int REFUSE = 1003;
  	/*1004: Reserved. The specific meaning might be defined in the future.*/
  	/**
  	 * 1005 is a reserved value and MUST NOT be set as a status code in a
  	 * Close control frame by an endpoint. It is designated for use in
  	 * applications expecting a status code to indicate that no status
  	 * code was actually present.
  	 */
  	public static final int NOCODE = 1005;
  	/**
  	 * 1006 is a reserved value and MUST NOT be set as a status code in a
  	 * Close control frame by an endpoint. It is designated for use in
  	 * applications expecting a status code to indicate that the
  	 * connection was closed abnormally, e.g. without sending or
  	 * receiving a Close control frame.
  	 */
  	public static final int ABNORMAL_CLOSE = 1006;
  	/**
  	 * 1007 indicates that an endpoint is terminating the connection
  	 * because it has received data within a message that was not
  	 * consistent with the type of the message (e.g., non-UTF-8 [RFC3629]
  	 * data within a text message).
  	 */
  	public static final int NO_UTF8 = 1007;
  	/**
  	 * 1008 indicates that an endpoint is terminating the connection
  	 * because it has received a message that violates its policy. This
  	 * is a generic status code that can be returned when there is no
  	 * other more suitable status code (e.g. 1003 or 1009), or if there
  	 * is a need to hide specific details about the policy.
  	 */
  	public static final int POLICY_VALIDATION = 1008;
  	/**
  	 * 1009 indicates that an endpoint is terminating the connection
  	 * because it has received a message which is too big for it to
  	 * process.
  	 */
  	public static final int TOOBIG = 1009;
  	/**
  	 * 1010 indicates that an endpoint (client) is terminating the
  	 * connection because it has expected the server to negotiate one or
  	 * more extension, but the server didn't return them in the response
  	 * message of the WebSocket handshake. The list of extensions which
  	 * are needed SHOULD appear in the /reason/ part of the Close frame.
  	 * Note that this status code is not used by the server, because it
  	 * can fail the WebSocket handshake instead.
  	 */
  	public static final int EXTENSION = 1010;
  	/**
  	 * 1011 indicates that a server is terminating the connection because
  	 * it encountered an unexpected condition that prevented it from
  	 * fulfilling the request.
  	 **/
  	public static final int UNEXPECTED_CONDITION = 1011;
  	/**
  	 * 1015 is a reserved value and MUST NOT be set as a status code in a
  	 * Close control frame by an endpoint. It is designated for use in
  	 * applications expecting a status code to indicate that the
  	 * connection was closed due to a failure to perform a TLS handshake
  	 * (e.g., the server certificate can't be verified).
  	 **/
  	public static final int TLS_ERROR = 1015;
  
  	/** The connection had never been established */
  	public static final int NEVER_CONNECTED = -1;
  	public static final int BUGGYCLOSE = -2;
  	public static final int FLASHPOLICY = -3;
  
  	public int getCloseCode() throws InvalidFrameException;
  	public String getMessage() throws InvalidDataException;
  }
  