01: /*
02: * This file is part of the QuickServer library
03: * Copyright (C) 2003-2005 QuickServer.org
04: *
05: * Use, modification, copying and distribution of this software is subject to
06: * the terms and conditions of the GNU Lesser General Public License.
07: * You should have received a copy of the GNU LGP License along with this
08: * library; if not, you can download a copy from <http://www.quickserver.org/>.
09: *
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: }
|