// ---------------------------------------------------------------------------
// jWebSocket - Copyright (c) 2010 Innotrade GmbH
// ---------------------------------------------------------------------------
// This program is free software; you can redistribute it and/or modify it
// under the terms of the GNU Lesser General Public License as published by the
// Free Software Foundation; either version 3 of the License, or (at your
// option) any later version.
// This program is distributed in the hope that it will be useful, but WITHOUT
// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
// FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for
// more details.
// You should have received a copy of the GNU Lesser General Public License along
// with this program; if not, see <http://www.gnu.org/licenses/lgpl.html>.
// ---------------------------------------------------------------------------
package org.jwebsocket.api;
import org.jwebsocket.kit.WebSocketException;
/**
* Base interface that represents the <tt>Token</tt> based jWebSocket client. This interface
* defines all the methods that handles the basic jWebSocket specific protocol.
* @author puran
* @version $Id: WebSocketTokenClient.java 697 2010-07-17 21:43:50Z mailtopuran@gmail.com $
*/
public interface WebSocketTokenClient extends WebSocketClient {
/**
* @return the loggedIn user name
*/
String getUsername();
/**
* Login the client based on given username and password to the jWebSocket server
* @param username the user name
* @param password the password string
* @throws WebSocketException if there's any exception while login
*/
void login(String aUsername, String aPassword) throws WebSocketException;
/**
* Logout the user
* @throws WebSocketException if exception while logging out
*/
void logout() throws WebSocketException;
/**
* Checks if for this client a user already is authenticated.
*/
boolean isAuthenticated();
/**
* Broadcast the text to all the connected clients to jWebSocket server
* @param text the text value to broadcast
* @throws WebSocketException if exception while broadcasting
*/
void broadcastText(String aText) throws WebSocketException;
/**
* Ping the jWebSocket server
* @param echo flag to enable/disable echo
* @throws WebSocketException if exception while doing a ping
*/
void ping(boolean aEcho) throws WebSocketException;
/**
* Send the text data
* @param target the target
* @param message the actual message to send
* @throws WebSocketException if exception while sending text
*/
void sendText(String aTargetId, String aText) throws WebSocketException;
/**
* Disconnect from the jWebSocket server
* @throws WebSocketException if error while disconnecting
*/
void disconnect() throws WebSocketException;
/**
* Send the token to get the number of connected clients
* @throws WebSocketException
*/
void getConnections() throws WebSocketException;
/**
* Add the token client listener which are interested in receiving only
* token based data.
* @param tokenListener the token listener object
*/
void addTokenClientListener(WebSocketClientTokenListener aTokenListener);
/**
* Remove the token client listener
* @param tokenListener the token client listener
*/
void removeTokenClientListener(WebSocketClientTokenListener aTokenListener);
}