package com.openrobot.common;
import java.io.IOException;
import java.security.NoSuchAlgorithmException;
/**
* Implemented by <tt>WebSocketClient</tt> and <tt>WebSocketServer</tt>.
* The methods within are called by <tt>WebSocket</tt>.
* @author Nathan Rajlich
*/
interface WebSocketListener {
/**
* Called when the socket connection is first established, and the WebSocket
* handshake has been recieved. This method should parse the
* <var>handshake</var>, and return a boolean indicating whether or not the
* connection is a valid WebSocket connection.
* @param conn The <tt>WebSocket</tt> instance this event is occuring on.
* @param handshake The entire UTF-8 decoded handshake from the connection.
* @return <var>true</var> if the handshake is valid, and <var>onOpen</var>
* should be immediately called afterwards. <var>false</var> if the
* handshake was invalid, and the connection should be terminated.
* @throws NoSuchAlgorithmException
*/
public boolean onHandshakeRecieved(WebSocket conn, String handshake, byte[] handShakeBody) throws IOException, NoSuchAlgorithmException;
/**
* Called when an entire text frame has been recieved. Do whatever you want
* here...
* @param conn The <tt>WebSocket</tt> instance this event is occuring on.
* @param message The UTF-8 decoded message that was recieved.
*/
public void onMessage(WebSocket conn, String message);
/**
* Called after <var>onHandshakeRecieved</var> returns <var>true</var>.
* Indicates that a complete WebSocket connection has been established,
* and we are ready to send/recieve data.
* @param conn The <tt>WebSocket</tt> instance this event is occuring on.
*/
public void onOpen(WebSocket conn);
/**
* Called after <tt>WebSocket#close</tt> is explicity called, or when the
* other end of the WebSocket connection is closed.
* @param conn The <tt>WebSocket</tt> instance this event is occuring on.
*/
public void onClose(WebSocket conn);
/**
* Called to retrieve the Draft of this listener.
*/
public WebSocketDraft getDraft();
}