tikhomirov@687: /* tikhomirov@687: * Copyright (c) 2013 TMate Software Ltd tikhomirov@687: * tikhomirov@687: * This program is free software; you can redistribute it and/or modify tikhomirov@687: * it under the terms of the GNU General Public License as published by tikhomirov@687: * the Free Software Foundation; version 2 of the License. tikhomirov@687: * tikhomirov@687: * This program is distributed in the hope that it will be useful, tikhomirov@687: * but WITHOUT ANY WARRANTY; without even the implied warranty of tikhomirov@687: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the tikhomirov@687: * GNU General Public License for more details. tikhomirov@687: * tikhomirov@687: * For information on how to redistribute this software under tikhomirov@687: * the terms of a license other than GNU General Public License tikhomirov@687: * contact TMate Software at support@hg4j.com tikhomirov@687: */ tikhomirov@687: package org.tmatesoft.hg.internal.remote; tikhomirov@687: tikhomirov@687: import java.io.InputStream; tikhomirov@687: import java.io.OutputStream; tikhomirov@687: import java.util.Collection; tikhomirov@687: import java.util.List; tikhomirov@687: tikhomirov@699: import org.tmatesoft.hg.auth.HgAuthFailedException; tikhomirov@687: import org.tmatesoft.hg.core.HgRemoteConnectionException; tikhomirov@687: import org.tmatesoft.hg.core.Nodeid; tikhomirov@687: import org.tmatesoft.hg.core.SessionContext; tikhomirov@698: import org.tmatesoft.hg.repo.HgRemoteRepository.Range; tikhomirov@699: import org.tmatesoft.hg.repo.HgRemoteRepository.RemoteDescriptor; tikhomirov@687: import org.tmatesoft.hg.repo.HgRuntimeException; tikhomirov@687: tikhomirov@687: /** tikhomirov@687: * tikhomirov@687: * @author Artem Tikhomirov tikhomirov@687: * @author TMate Software Ltd. tikhomirov@687: */ tikhomirov@687: public interface Connector { tikhomirov@687: static final String CMD_HELLO = "hello"; // TODO enum tikhomirov@687: static final String CMD_CAPABILITIES = "capabilities"; tikhomirov@687: static final String CMD_HEADS = "heads"; tikhomirov@687: static final String CMD_BETWEEN = "between"; tikhomirov@687: static final String CMD_BRANCHES = "branches"; tikhomirov@687: static final String CMD_CHANGEGROUP = "changegroup"; tikhomirov@687: static final String CMD_UNBUNDLE = "unbundle"; tikhomirov@687: static final String CMD_PUSHKEY = "pushkey"; tikhomirov@687: static final String CMD_LISTKEYS = "listkeys"; tikhomirov@687: static final String NS_BOOKMARKS = "bookmarks"; tikhomirov@687: static final String NS_PHASES = "phases"; tikhomirov@687: tikhomirov@699: // note, #init shall not assume remote is instanceof RemoteConnectorDescriptor, but Adaptable to it, instead tikhomirov@699: void init(RemoteDescriptor remote, SessionContext sessionContext, Object globalConfig) throws HgRuntimeException; tikhomirov@687: String getServerLocation(); tikhomirov@687: // tikhomirov@699: void connect() throws HgAuthFailedException, HgRemoteConnectionException, HgRuntimeException; tikhomirov@687: void disconnect() throws HgRemoteConnectionException, HgRuntimeException; tikhomirov@687: void sessionBegin() throws HgRemoteConnectionException, HgRuntimeException; tikhomirov@687: void sessionEnd() throws HgRemoteConnectionException, HgRuntimeException; tikhomirov@687: // tikhomirov@687: String getCapabilities() throws HgRemoteConnectionException, HgRuntimeException; tikhomirov@687: tikhomirov@687: InputStream heads() throws HgRemoteConnectionException, HgRuntimeException; tikhomirov@687: InputStream between(Collection ranges) throws HgRemoteConnectionException, HgRuntimeException; tikhomirov@687: InputStream branches(List nodes) throws HgRemoteConnectionException, HgRuntimeException; tikhomirov@687: InputStream changegroup(List roots) throws HgRemoteConnectionException, HgRuntimeException; tikhomirov@687: OutputStream unbundle(long outputLen, List remoteHeads) throws HgRemoteConnectionException, HgRuntimeException; tikhomirov@687: InputStream pushkey(String opName, String namespace, String key, String oldValue, String newValue) throws HgRemoteConnectionException, HgRuntimeException; tikhomirov@687: InputStream listkeys(String namespace, String actionName) throws HgRemoteConnectionException, HgRuntimeException; tikhomirov@687: }