blob: 513fd3e009c8a6e821ebc86ca53c6062ee639f19 [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.qsadmin;
import java.io.IOException;
import java.net.SocketTimeoutException;
import org.quickserver.net.server.*;
/**
* This interface defines the methods that should be implemented by
* any class that wants to override default protocol of QsAdminServer
* or add new command specific to your application.
*
* <p>
* Recommendations to be followed when implementing ClientCommandHandler
* <ul>
* <li>Should be thread safe.
* <li>It should not store any client data that may be needed in the
* implementation.
* <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.
* <li>Should have a default constructor - If QsAdminSupport is needed.
* </ul>
* If you need to access the QuickServer you can use the code given below<br/>
* <code>QuickServer myserver = (QuickServer) handler.getServer().getStoreObjects()[0];</code>
* </p>
* @see QSAdminServer#startServer()
* @author Akshathkumar Shetty
*/
public interface CommandPlugin {
/**
* Method called every time client sends a command to QsAdminServer.
* Should be used to handle the command sent and send any
* requested data.
* If the comand is handled by the plugin it should
* return <code>true</code> else it should return <code>false</code>
* indicating <code>qsadmin.CommandHandler</code> to take any
* default action for the command.
* This method can be used to override default protocol of
* QsAdminServer or add new command specific to your application.
*
* @exception java.net.SocketTimeoutException if socket times out
* @exception java.io.IOException if io error in socket
*/
public boolean handleCommand(ClientHandler handler, String command)
throws SocketTimeoutException, IOException;
}