/* ** This file is part of Filius, a network construction and simulation software. ** ** Originally created at the University of Siegen, Institute "Didactics of ** Informatics and E-Learning" by a students' project group: ** members (2006-2007): ** André Asschoff, Johannes Bade, Carsten Dittich, Thomas Gerding, ** Nadja Haßler, Ernst Johannes Klebert, Michell Weyer ** supervisors: ** Stefan Freischlad (maintainer until 2009), Peer Stechert ** Project is maintained since 2010 by Christian Eibl <filius@c.fameibl.de> ** and Stefan Freischlad ** Filius is free software: you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation, either version 2 of the License, or ** (at your option) version 3. ** ** Filius is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied ** warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ** PURPOSE. See the GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with Filius. If not, see <http://www.gnu.org/licenses/>. */ package filius.software.dateiaustausch; import java.util.StringTokenizer; import filius.Main; /** * @author Nadja Haßler */ public class QueryHitPaket extends PeerToPeerPaket { private int anzahlHits; private int port; private String ipAdresse; private String geschwindigkeit; // (in kb/sek) private String ergebnis;// =new LinkedList(); private String serventIdentifizierung; public QueryHitPaket(int anzahlHips, int port, String ip, String speed, String ergebnisListe, String si) { super(); Main.debug.println("INVOKED-2 ("+this.hashCode()+") "+getClass()+" (QueryHitPaket), constr: QueryHitPaket("+anzahlHips+","+port+","+ip+","+speed+","+ergebnisListe+","+si+")"); setPayload("0x81"); this.anzahlHits = anzahlHips; this.port = port; this.ipAdresse = ip; this.geschwindigkeit = speed; this.ergebnis = ergebnisListe; this.serventIdentifizierung = si; this.setPayloadLength(payloadLengthBerechnen()); } /** * wandelt einen String (wenn möglich) in ein QueryHitPaket um * * @param string * der umzuwandelnde String */ public QueryHitPaket(String string) { Main.debug.println("INVOKED ("+this.hashCode()+") "+getClass()+" (QueryHitPaket), constr: QueryHitPaket("+string+")"); // String wird nach "//" getrennt StringTokenizer tk = new StringTokenizer(string, "//"); // Absichern der Informationen guid = Integer.parseInt(tk.nextToken()); payload = tk.nextToken(); hops = Integer.parseInt(tk.nextToken()); ttl = Integer.parseInt(tk.nextToken()); payloadLength = Integer.parseInt(tk.nextToken()); anzahlHits = Integer.parseInt(tk.nextToken()); port = Integer.parseInt(tk.nextToken()); ipAdresse = tk.nextToken(); geschwindigkeit = tk.nextToken(); ergebnis = tk.nextToken(); serventIdentifizierung = tk.nextToken(); } public long payloadLengthBerechnen() { Main.debug.println("INVOKED ("+this.hashCode()+") "+getClass()+" (QueryHitPaket), payloadLengthBerechnen()"); long ergebnisZahl = 0; ergebnisZahl = ergebnisZahl + anzahlBenoetigterBits(anzahlHits) + anzahlBenoetigterBits(port) + ipAdresse.length() * 8 + (geschwindigkeit.length() * 8) + ergebnis.length() * 8 + serventIdentifizierung.length() * 8; //Main.debug.println(" hits: " + anzahlBenoetigterBits(anzahlHits) //+ " port: " + anzahlBenoetigterBits(port) + " ip: " //+ ipAdresse.length() * 8 + " geschw: " //+ (geschwindigkeit.length() * 8) + " ergebnis: " //+ ergebnis.length() * 8 + " serverID: " //+ serventIdentifizierung.length() * 8); return ergebnisZahl; } public int getAnzahlHits() { return anzahlHits; } public void setAnzahlHits(int anzahlHips) { this.anzahlHits = anzahlHips; } public String getErgebnis() { return ergebnis; } public void setErgebnis(String ergebnisListe) { this.ergebnis = ergebnisListe; } public String getIpAdresse() { return ipAdresse; } public void setIpAdresse(String ipAdresse) { this.ipAdresse = ipAdresse; } public int getPort() { return port; } public void setPort(int port) { this.port = port; } public String getServentIdentifizierung() { return serventIdentifizierung; } public void setServentIdentifizierung(String serventIdentifizierung) { this.serventIdentifizierung = serventIdentifizierung; } public String getGeschwindigkeit() { return geschwindigkeit; } public void setGeschwindigkeit(String speed) { this.geschwindigkeit = speed; } /** * wandelt ein QueryHitPaket in einen String um * * @return der String das QueryHitPaket verpackt als String */ public String toString() { if (getErgebnis().equals("")) { setErgebnis(" "); } if (getServentIdentifizierung().equals("")) { setServentIdentifizierung(" "); } return getGuid() + "//" + getPayload() + "//" + getHops() + "//" + getTtl() + "//" + getPayloadLength() + "//" + getAnzahlHits() + "//" + getPort() + "//" + getIpAdresse() + "//" + getGeschwindigkeit() + "//" + getErgebnis() + "//" + getServentIdentifizierung(); } }