package org.fdroid.fdroid.localrepo.peers; import android.net.Uri; import android.os.Parcel; import javax.jmdns.ServiceInfo; import javax.jmdns.impl.FDroidServiceInfo; public class BonjourPeer extends WifiPeer { private final FDroidServiceInfo serviceInfo; public BonjourPeer(ServiceInfo serviceInfo) { this.serviceInfo = new FDroidServiceInfo(serviceInfo); this.name = serviceInfo.getDomain(); this.uri = Uri.parse(this.serviceInfo.getRepoAddress()); this.shouldPromptForSwapBack = true; } @Override public String toString() { return getName(); } @Override public String getName() { return serviceInfo.getName(); } @Override public boolean equals(Object peer) { if (peer != null && peer instanceof BonjourPeer) { BonjourPeer that = (BonjourPeer) peer; return this.getFingerprint().equals(that.getFingerprint()); } return false; } @Override public int hashCode() { return getFingerprint().hashCode(); } @Override public String getRepoAddress() { return serviceInfo.getRepoAddress(); } /** * Return the fingerprint of the signing key, or {@code null} if it is not set. */ @Override public String getFingerprint() { return serviceInfo.getFingerprint(); } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeParcelable(serviceInfo, flags); } private BonjourPeer(Parcel in) { this((ServiceInfo) in.readParcelable(FDroidServiceInfo.class.getClassLoader())); } public static final Creator<BonjourPeer> CREATOR = new Creator<BonjourPeer>() { public BonjourPeer createFromParcel(Parcel source) { return new BonjourPeer(source); } public BonjourPeer[] newArray(int size) { return new BonjourPeer[size]; } }; }