blob: c8856d8f5508996bc077907e7114ec194beae3b5 [file] [log] [blame]
/*
* This file is part of the QuickServer library
* Copyright (C) QuickServer.org
*
* Use, modification, copying and distribution of this software is subject to
* the terms and conditions of the GNU Lesser General Public License.
* You should have received a copy of the GNU LGP License along with this
* library; if not, you can download a copy from <http://www.quickserver.org/>.
*
* For questions, suggestions, bug-reports, enhancement-requests etc.
* visit http://www.quickserver.org
*
*/
package org.quickserver.net.server;
import java.io.*;
import java.net.SocketTimeoutException;
/**
* This interface defines the methods that should be implemented by any
* class that wants to handle client events.
*
* <p>
* Recommendations to be followed when implementing ClientEventHandler
* <ul>
* <li>Should have a default constructor.
* <li>Should be thread safe.
* <li>It should not store any data that may is associated with a particular client.
* <li>If any client data is need to be saved from the client session,
* it should be saved to a {@link ClientData} class, which can be retrieved
* using handler.getClientData() method.
* </ul>
* </p>
* <p>If not ClientEventHandler is set for QuickServer then a
* default implementation {@link org.quickserver.net.server.impl.DefaultClientEventHandler} is used.
* </p>
* <p>
* Ex:
* <code><BLOCKQUOTE><pre>
package echoserver;
import java.net.*;
import java.io.*;
import org.quickserver.net.server.ClientEventHandler;
import org.quickserver.net.server.ClientHandler;
public class EchoEventHandler implements ClientEventHandler {
public void gotConnected(ClientHandler handler)
throws SocketTimeoutException, IOException {
handler.sendSystemMsg("Connection opened : "+
handler.getSocket().getInetAddress());
handler.sendClientMsg("Welcome to EchoServer v1.0 ");
handler.sendClientMsg("Note: Password = Username");
handler.sendClientMsg("Send 'Quit' to exit");
}
public void lostConnection(ClientHandler handler)
throws IOException {
handler.sendSystemMsg("Connection lost : " +
handler.getSocket().getInetAddress());
}
public void closingConnection(ClientHandler handler)
throws IOException {
handler.sendSystemMsg("Connection closing : " +
handler.getSocket().getInetAddress());
}
}
</pre></BLOCKQUOTE></code></p>
* @since 1.4.5
* @author Akshathkumar Shetty
*/
public interface ClientEventHandler {
/**
* Method called when there is a new client connects
* to the QuickServer.
* Can be used to send welcome message to the client and logging.
* @exception java.net.SocketTimeoutException if socket times out
* @exception java.io.IOException if io error in socket
*/
public void gotConnected(ClientHandler handler)
throws SocketTimeoutException, IOException;
/**
* Method called when client connection is lost.
* Don't write to the connection in this method.
* Its just information, to be used at the Server end.
* It can be caused due to network errors.
* @exception java.io.IOException if io error in socket
*/
public void lostConnection(ClientHandler handler)
throws IOException;
/**
* Method called when client connection is closed.
* Don't write to the connection in this method.
* Its just information, you can use to log time and ip of client closing connection.
* @exception java.io.IOException if io error in socket
*/
public void closingConnection(ClientHandler handler)
throws IOException;
}