package uc.protocols.client; import java.io.IOException; import java.net.ProtocolException; import java.util.Set; import uc.IUser; import uc.protocols.ADCStatusMessage; import uc.protocols.hub.Flag; /** * * The client SUP * * EX CSUP ADBAS0 ADBZIP ADZLIG * Connecting sends first.. * and Gets SUP and CINF just with CID and TO as response.. * * @author Quicksilver * */ public class SUP extends AbstractADCClientProtocolCommand { //ADTIGR -> we support TTHs.. //BZIP -> Filelist in Bzip format //ZLIG -> ZLIB Get support public static final String SUPPORTS = "CSUP ADBASE ADTIGR ADBZIP ADZLIG\n"; private boolean first = true; public SUP() { setPattern(prefix +" (.*)",true); } public void handle(ClientProtocol client,String command) throws ProtocolException, IOException { client.setProtocolNMDC(false); Set<String> supports = client.getOthersSupports(); for (String sup: space.split(matcher.group(1))) { if (sup.length() > 2) { if (sup.startsWith("AD")) { supports.add(sup.substring(2)); } else if (sup.startsWith("RM")) { supports.remove(sup.substring(2)); } } } client.setOthersSupports(supports); if (first && client.isServer()) { SUP.sendSUP(client); INF.sendINFServerToClient(client); } first = false; } public static void sendSUP(ClientProtocol client) { client.addCommand(new INF()); client.sendUnmodifiedRaw(SUPPORTS); IUser usr = client.getSelf(); if (usr != null && !client.isServer()) { //send a STA about the referrer String hubaddress = usr.getHub().getFavHub().getSimpleHubaddy(); ADCStatusMessage adcm = new ADCStatusMessage("",0,0,Flag.RF,hubaddress); STA.sendSTA(client, adcm); } } }