/*
* @(#)DefaultSocketFactoryImpl.java 1.3 04/07/26
*
* Copyright 2004 Sun Microsystems, Inc. All rights reserved.
* SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
*/
package com.sun.corba.se.impl.transport;
import java.io.IOException;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.net.SocketException;
import java.net.ServerSocket;
import java.nio.channels.SocketChannel;
import java.nio.channels.ServerSocketChannel;
import com.sun.corba.se.pept.transport.Acceptor;
import com.sun.corba.se.spi.orb.ORB;
import com.sun.corba.se.spi.transport.ORBSocketFactory;
import com.sun.corba.se.impl.orbutil.ORBConstants;
public class DefaultSocketFactoryImpl
implements ORBSocketFactory
{
private ORB orb;
public void setORB(ORB orb)
{
this.orb = orb;
}
public ServerSocket createServerSocket(String type,
InetSocketAddress inetSocketAddress)
throws IOException
{
ServerSocketChannel serverSocketChannel = null;
ServerSocket serverSocket = null;
if (orb.getORBData().acceptorSocketType().equals(ORBConstants.SOCKETCHANNEL)) {
serverSocketChannel = ServerSocketChannel.open();
serverSocket = serverSocketChannel.socket();
} else {
serverSocket = new ServerSocket();
}
serverSocket.bind(inetSocketAddress);
return serverSocket;
}
public Socket createSocket(String type,
InetSocketAddress inetSocketAddress)
throws IOException
{
SocketChannel socketChannel = null;
Socket socket = null;
if (orb.getORBData().connectionSocketType().equals(ORBConstants.SOCKETCHANNEL)) {
socketChannel = SocketChannel.open(inetSocketAddress);
socket = socketChannel.socket();
} else {
socket = new Socket(inetSocketAddress.getHostName(),
inetSocketAddress.getPort());
}
// Disable Nagle's algorithm (i.e., always send immediately).
socket.setTcpNoDelay(true);
return socket;
}
public void setAcceptedSocketOptions(Acceptor acceptor,
ServerSocket serverSocket,
Socket socket)
throws SocketException
{
// Disable Nagle's algorithm (i.e., always send immediately).
socket.setTcpNoDelay(true);
}
}
// End of file.
|