package org.limewire.lws.server; import java.util.Map; /** * Implementations of this class are responsible for Dispatching commands after * the process of authentication has gone through. A {@link LWSDispatcher} will * recieve messages, listening to a web server, perform authentication, and then * call {@link #receiveCommand(String, Map)} with commands that come after * authentication. When receiving these commands, an implementation should take * the appropriate action for that command and arguments. <br/> <br/> Example: * Authentation has been performed and a {@link LWSDispatcher} receives the * following URL * * <pre> * http://localhost:8091/store:Msg?command=DownloadSong&hash=123&code=456&privateKey=abc * </pre> * * For a given {@link LWSReceivesCommandsFromDispatcher}, <code>d</code>, the {@link LWSDispatcher} * will then construct a {@link Map} of arguments, <code>args</code> * * <pre> * Map<String, String> args = new HashMap<String, String>(); * args.put("hash", "123"); * args.put("code", "456"); * </pre> * * and call {@link performCommand} such as * * <pre> * d.performCommand("DownloadSong", args); * </pre> * * Note: The <code>privateKey</code> is not passed along, because that is just * used for authentication. * */ public interface LWSReceivesCommandsFromDispatcher { /** * Responds to <code>cmd</code> with arguments <code>args</code>. * * @param cmd the command to which we this responds * @param args the arguments to <code>cmd</code> * @return to <code>cmd</code> with arguments <code>args</code> */ String receiveCommand(String cmd, Map<String, String> args); /** * Called when we're connected from the server, and <code>this</code> * should notify all the {@link LWSConnectionListener}s added by * {@link #addConnectionListener(LWSConnectionListener)}. * * @param isConnected whether we're connected when a connection changes */ void setConnected(boolean isConnected); /** * Returns <code>true</code> if <code>lis</code> was added as a listener, * <code>false</code> otherwise. * * @param lis new listener * @return <code>true</code> if <code>lis</code> was added as a listener, * <code>false</code> otherwise. */ boolean addConnectionListener(LWSConnectionListener lis); /** * Returns <code>true</code> if <code>lis</code> was removed as a listener, * <code>false</code> otherwise. * * @param lis old listener * @return <code>true</code> if <code>lis</code> was removed as a listener, * <code>false</code> otherwise. */ boolean removeConnectionListener(LWSConnectionListener lis); }