package org.limewire.friend.impl.feature;
import org.limewire.friend.api.FriendPresence;
import org.limewire.friend.api.feature.ConnectBackRequestFeature;
import org.limewire.friend.api.feature.FeatureInitializer;
import org.limewire.friend.api.feature.FeatureRegistry;
import org.limewire.friend.api.feature.FeatureTransport;
import org.limewire.listener.EventBroadcaster;
import org.limewire.net.ConnectBackRequest;
import org.limewire.net.ConnectBackRequestedEvent;
import com.google.inject.Inject;
import com.google.inject.Singleton;
@Singleton
public class ConnectBackRequestFeatureTransportHandler implements FeatureTransport.Handler<ConnectBackRequest>{
private final EventBroadcaster<ConnectBackRequestedEvent> connectBackRequestedEventBroadcaster;
@Inject
public ConnectBackRequestFeatureTransportHandler(FeatureRegistry featureRegistry,
EventBroadcaster<ConnectBackRequestedEvent> connectBackRequestedEventBroadcaster) {
this.connectBackRequestedEventBroadcaster = connectBackRequestedEventBroadcaster;
new ConnectBackRequestIQFeatureInitializer().register(featureRegistry);
}
@Override
public void featureReceived(String from, ConnectBackRequest connectBackRequest) {
connectBackRequestedEventBroadcaster.broadcast(new ConnectBackRequestedEvent(connectBackRequest));
}
private class ConnectBackRequestIQFeatureInitializer implements FeatureInitializer {
@Override
public void register(FeatureRegistry registry) {
registry.registerPublicInitializer(ConnectBackRequestFeature.ID, this);
}
@Override
public void initializeFeature(FriendPresence friendPresence) {
friendPresence.addFeature(new ConnectBackRequestFeature());
}
@Override
public void removeFeature(FriendPresence friendPresence) {
friendPresence.removeFeature(ConnectBackRequestFeature.ID);
}
}
}