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.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;
public class BlockingConnectionFactoryImpl 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 BlockingConnectionFactoryImpl(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;
}
/*
* (non-Javadoc)
*
* @see com.limegroup.gnutella.ConnectionFactory#createConnection(java.net.Socket)
*/
public BlockingConnection createConnection(Socket socket) {
return new BlockingConnection(socket, capabilitiesVMFactory, acceptor.get(),
supportedVendorMessage, messageFactory, networkManager, networkInstanceUtils);
}
/* (non-Javadoc)
* @see com.limegroup.gnutella.ConnectionFactory#createConnection(java.lang.String, int)
*/
public BlockingConnection createConnection(String host, int port) {
return createConnection(host, port, ConnectType.PLAIN);
}
/* (non-Javadoc)
* @see com.limegroup.gnutella.ConnectionFactory#createConnection(java.lang.String, int, com.limegroup.gnutella.util.SocketsManager.ConnectType)
*/
public BlockingConnection createConnection(String host, int port,
ConnectType connectType) {
return new BlockingConnection(host, port, connectType, capabilitiesVMFactory,
socketsManager.get(), acceptor.get(), supportedVendorMessage,
messageFactory, networkManager, networkInstanceUtils);
}
}