1 /* 2 * This file is part of the QuickServer library 3 * Copyright (C) 2003-2005 QuickServer.org 4 * 5 * Use, modification, copying and distribution of this software is subject to 6 * the terms and conditions of the GNU Lesser General Public License. 7 * You should have received a copy of the GNU LGP License along with this 8 * library; if not, you can download a copy from <http://www.quickserver.org/>. 9 * 10 * For questions, suggestions, bug-reports, enhancement-requests etc. 11 * visit http://www.quickserver.org 12 * 13 */ 14 15 package org.quickserver.net.qsadmin; 16 17 import java.io.IOException; 18 import java.net.SocketTimeoutException; 19 import org.quickserver.net.server.*; 20 21 /** 22 * This interface defines the methods that should be implemented by 23 * any class that wants to override default protocol of QsAdminServer 24 * or add new command specific to your application. 25 * 26 * <p> 27 * Recommendations to be followed when implementing ClientCommandHandler 28 * <ul> 29 * <li>Should be thread safe. 30 * <li>It should not store any client data that may be needed in the 31 * implementation. 32 * <li>If any client data is need to be saved from the client session, 33 * it should be saved to a {@link ClientData} class, which can be retrieved 34 * using handler.getClientData() method. 35 * <li>Should have a default constructor - If QsAdminSupport is needed. 36 * </ul> 37 * If you need to access the QuickServer you can use the code given below<br/> 38 * <code>QuickServer myserver = (QuickServer) handler.getServer().getStoreObjects()[0];</code> 39 * </p> 40 * @see QSAdminServer#startServer() 41 * @author Akshathkumar Shetty 42 */ 43 public interface CommandPlugin { 44 /** 45 * Method called every time client sends a command to QsAdminServer. 46 * Should be used to handle the command sent and send any 47 * requested data. 48 * If the comand is handled by the plugin it should 49 * return <code>true</code> else it should return <code>false</code> 50 * indicating <code>qsadmin.CommandHandler</code> to take any 51 * default action for the command. 52 * This method can be used to override default protocol of 53 * QsAdminServer or add new command specific to your application. 54 * 55 * @exception java.net.SocketTimeoutException if socket times out 56 * @exception java.io.IOException if io error in socket 57 */ 58 public boolean handleCommand(ClientHandler handler, String command) 59 throws SocketTimeoutException, IOException; 60 61 } 62