package com.limegroup.gnutella.connection;
import java.net.Socket;
import org.limewire.io.NetworkInstanceUtils;
import org.limewire.net.SocketsManager;
import org.limewire.net.SocketsManager.ConnectType;
import com.google.inject.Inject;
import com.google.inject.Provider;
import com.google.inject.Singleton;
import com.limegroup.gnutella.Acceptor;
import com.limegroup.gnutella.NetworkManager;
import com.limegroup.gnutella.messages.MessageFactory;
import com.limegroup.gnutella.messages.vendor.CapabilitiesVMFactory;
import com.limegroup.gnutella.messages.vendor.MessagesSupportedVendorMessage;
@Singleton
public class CountingConnectionFactory implements BlockingConnectionFactory {
private final CapabilitiesVMFactory capabilitiesVMFactory;
private final Provider<SocketsManager> socketsManager;
private final Provider<Acceptor> acceptor;
private final MessagesSupportedVendorMessage supportedVendorMessage;
private final MessageFactory messageFactory;
private final NetworkManager networkManager;
private final NetworkInstanceUtils networkInstanceUtils;
@Inject
public CountingConnectionFactory(CapabilitiesVMFactory capabilitiesVMFactory,
Provider<SocketsManager> socketsManager,
Provider<Acceptor> acceptor,
MessagesSupportedVendorMessage supportedVendorMessage,
MessageFactory messageFactory, NetworkManager networkManager,
NetworkInstanceUtils networkInstanceUtils) {
this.capabilitiesVMFactory = capabilitiesVMFactory;
this.socketsManager = socketsManager;
this.acceptor = acceptor;
this.supportedVendorMessage = supportedVendorMessage;
this.messageFactory = messageFactory;
this.networkManager = networkManager;
this.networkInstanceUtils = networkInstanceUtils;
}
public CountingConnection createConnection(Socket socket) {
throw new UnsupportedOperationException("not implemented");
}
public CountingConnection createConnection(String host, int port) {
return createConnection(host, port, ConnectType.PLAIN);
}
public CountingConnection createConnection(String host, int port,
ConnectType connectType) {
return new CountingConnection(host, port, connectType, capabilitiesVMFactory,
socketsManager.get(), acceptor.get(), supportedVendorMessage,
messageFactory, networkManager, networkInstanceUtils);
}
}