package com.limegroup.gnutella.handshaking;
import java.io.IOException;
import com.limegroup.gnutella.ConnectionManager;
import com.limegroup.gnutella.RouterService;
/**
* This is an abstract class that provides a default implementation of
* HandshakeResponder.
*/
public abstract class DefaultHandshakeResponder implements HandshakeResponder {
/**
* An instance of connection manager (to reference other stuff
* held by connection manager)
*/
protected final ConnectionManager _manager;
/**
* The host to which are opening connection
*/
private final String _host;
/**
* Whether the handshake responder should do locale preferencing.
*/
private boolean _pref = false;
/**
* Creates a new instance
* @param manager Instance of connection manager, managing this
* connection
* @param host The host with whom we are handshaking
*/
public DefaultHandshakeResponder(String host) {
this._manager = RouterService.getConnectionManager();
this._host = host;
}
/**
* Calls respondToOutgoing or respondToIncoming based on the value of outgoing.
*/
public HandshakeResponse respond(HandshakeResponse response, boolean outgoing) {
if (outgoing) return respondToOutgoing(response);
return respondToIncoming(response);
}
/**
* Returns the Remote IP.
*/
protected String getRemoteIP() {
return _host;
}
/**
* Responds to the given outgoing HandshakeResponse.
*/
protected abstract HandshakeResponse respondToOutgoing(HandshakeResponse response);
/**
* Responds to the given incoming HandshakeResponse.
*/
protected abstract HandshakeResponse respondToIncoming(HandshakeResponse response);
/**
* Set locale preferencing.
*/
public void setLocalePreferencing(boolean b) {
_pref = b;
}
/**
* Get locale preferencing.
*/
public boolean getLocalePreferencing() {
return _pref;
}
}