/* * ==================================================================== * Copyright (c) 2004-2012 TMate Software Ltd. All rights reserved. * * This software is licensed as described in the file COPYING, which * you should have received as part of this distribution. The terms * are also available at http://svnkit.com/license.html * If newer versions of this license are posted there, you may use a * newer version instead, at your option. * ==================================================================== */ package org.tmatesoft.svn.core.internal.util; import java.net.Socket; import java.net.InetSocketAddress; import java.io.IOException; /** * @author TMate Software Ltd. * @version 1.3 */ public class SVNSocketConnection implements Runnable { private Socket mySocket; private InetSocketAddress myAddress; private int myTimeout; private IOException myError; private volatile boolean myIsSocketConnected; public SVNSocketConnection(Socket socket, InetSocketAddress address, int timeout) { mySocket = socket; myAddress = address; myTimeout = timeout; myIsSocketConnected = false; } public IOException getError() { return myError; } public boolean isSocketConnected() { synchronized (this) { if (!myIsSocketConnected) { try { wait(100); } catch (InterruptedException e) { } } } return myIsSocketConnected; } public void run() { try { mySocket.connect(myAddress, myTimeout); } catch (IOException e) { myError = e; } finally { synchronized (this) { myIsSocketConnected = true; notify(); } } } }