/* * JacORB - a free Java ORB * * Copyright (C) 1997-2014 Gerald Brose / The JacORB Team. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ package org.jacorb.orb.iiop; import java.io.IOException; import java.net.Socket; import java.net.SocketException; import org.jacorb.orb.etf.StreamConnectionBase; import org.jacorb.orb.listener.SSLListenerUtil; import org.omg.CORBA.COMM_FAILURE; /** * @author Nicolas Noffke * @author Andre Spiegel */ public abstract class IIOPConnection extends StreamConnectionBase { protected Socket socket; protected boolean use_ssl; public IIOPConnection() { super(); } public boolean isSSL() { return use_ssl; } protected synchronized void setTimeout(int timeout) { if (socket != null) { try { if (logger.isInfoEnabled()) { logger.info ("Socket timeout set to " + timeout + " ms"); } socket.setSoTimeout(timeout); } catch( SocketException se ) { if (logger.isInfoEnabled()) { logger.info("SocketException", se); } } } } protected COMM_FAILURE handleCommFailure(IOException e) { SSLListenerUtil.processException(orb, this, socket, e); return to_COMM_FAILURE(e); } protected synchronized int getTimeout() { try { return socket.getSoTimeout(); } catch (SocketException ex) { throw handleCommFailure(ex); } } /** * <code>hashCode</code> returns the hash code value for the object. It * will return the hashCode of the underlying socket. If the socket is null * or closed it will return hash of the IIOPConnection itself. * * Note - if this is changed this may break the context minikey system. * * @return an <code>int</code> value */ public int hashCode() { // Can't use socket.isClosed as does not exist in 1.3 if (socket == null || (!connected)) { return super.hashCode(); } return socket.hashCode(); } public Socket getSocket() { return socket; } }