package com.limegroup.gnutella.auth;
import java.net.UnknownHostException;
import com.limegroup.gnutella.UDPService;
import com.limegroup.gnutella.messages.Message;
import com.limegroup.gnutella.util.IpPort;
import com.limegroup.gnutella.util.IpPortImpl;
/** A ContentAuthority that sends to a single IpPort. */
public class IpPortContentAuthority implements ContentAuthority {
private IpPort authority;
/** host/port to store which'll be used when initializing, if necessary */
private String host;
private int port;
/** Constructs the authority with the given IpPort. */
public IpPortContentAuthority(IpPort host) {
this.authority = host;
this.host = host.getAddress();
this.port = host.getPort();
}
/**
* Constructs the authority with the given host/port.
* You must call initialize prior to sending a message.
*/
public IpPortContentAuthority(String host, int port) {
this.host = host;
this.port = port;
}
/** Sends a message to the authority. */
public void send(Message m) {
UDPService.instance().send(m, authority);
}
/** Constructs the authority from the host/port if necessary */
public boolean initialize() {
if (authority == null) {
try {
authority = new IpPortImpl(host, port);
} catch (UnknownHostException uhe) {
return false;
// ignored.
}
}
return true;
}
public IpPort getIpPort() {
return authority;
}
}