blob: b391cf4884650dbcfb856bc0bec35b197fb2d426 [file] [log] [blame]
/*
* Copyright (C) 2021, Thomas Wolf <thomas.wolf@paranor.ch> and others
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Distribution License v. 1.0 which is available at
* https://www.eclipse.org/org/documents/edl-v10.php.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
package org.eclipse.jgit.transport.sshd.agent;
import java.io.Closeable;
import java.io.IOException;
/**
* Simple interface for connecting to something and making RPC-style
* request-reply calls.
*
* @see ConnectorFactory
* @since 6.0
*/
public interface Connector extends Closeable {
/**
* Connects to an SSH agent if there is one running. If called when already
* connected just returns {@code true}.
*
* @return {@code true} if an SSH agent is available and connected,
* {@code false} if no SSH agent is available
* @throws IOException
* if connecting to the SSH agent failed
*/
boolean connect() throws IOException;
/**
* Performs a remote call to the SSH agent and returns the result.
*
* @param command
* to send
* @param message
* to send; must have at least 5 bytes, and must have 5 unused
* bytes at the front.
* @return the result received
* @throws IOException
* if an error occurs
*/
byte[] rpc(byte command, byte[] message) throws IOException;
/**
* Performs a remote call sending only a command without any parameters to
* the SSH agent and returns the result.
*
* @param command
* to send
* @return the result received
* @throws IOException
* if an error occurs
*/
default byte[] rpc(byte command) throws IOException {
return rpc(command, new byte[5]);
}
}