package org.limewire.core.impl;
import org.limewire.core.api.endpoint.RemoteHost;
import org.limewire.friend.api.FriendPresence;
import org.limewire.friend.api.feature.LimewireFeature;
import com.limegroup.gnutella.RemoteFileDesc;
/**
* A RemoteFileDesc implementation for RemoteHosts.
*/
public class RemoteHostRFD implements RemoteHost {
private RemoteFileDesc remoteFileDesc;
private FriendPresence friendPresence;
public RemoteHostRFD(RemoteFileDesc remoteFileDesc, FriendPresence friendPresence) {
this.remoteFileDesc = remoteFileDesc;
this.friendPresence = friendPresence;
}
@Override
public FriendPresence getFriendPresence() {
return friendPresence;
}
@Override
public boolean isBrowseHostEnabled() {
if(friendPresence.getFriend().isAnonymous()) {
return remoteFileDesc.isBrowseHostEnabled();
} else {
//ensure friend/user still logged in through LW
return friendPresence.hasFeatures(LimewireFeature.ID);
}
}
@Override
public boolean isChatEnabled() {
if(friendPresence.getFriend().isAnonymous()) {
return false;
}else { //TODO: this isn't entirely correct. Friend could have signed
// ouf of LW but still be logged in through other service allowing chat
return friendPresence.hasFeatures(LimewireFeature.ID);
}
}
@Override
public boolean isSharingEnabled() {
if(friendPresence.getFriend().isAnonymous()) {
return false;
} else {
//ensure friend/user still logged in through LW
return friendPresence.hasFeatures(LimewireFeature.ID);
}
}
}