package org.tmatesoft.svn.core.internal.io.svn.ssh; import java.io.IOException; import com.trilead.ssh2.Connection; import com.trilead.ssh2.Session; public class SshConnection { private Connection myConnection; private volatile int mySessionCount; private SshHost myHost; private long myLastAccessTime; public SshConnection(SshHost host, Connection connection) { myHost = host; myConnection = connection; myLastAccessTime = System.currentTimeMillis(); } public SshSession openSession() throws IOException { Session session = myConnection.openSession(); if (session != null) { mySessionCount++; return new SshSession(this, session); } return null; } public void sessionClosed(SshSession sshSession) { myHost.lock(); try { myLastAccessTime = System.currentTimeMillis(); mySessionCount--; } finally { myHost.unlock(); } } public int getSessionsCount() { return mySessionCount; } public void close() { myConnection.close(); mySessionCount = 0; } public long lastAcccessTime() { return myLastAccessTime; } }