A behavior that defines required callbacks for a low-level SFTP adapter.
@callback close(channel_pid :: pid(), handle :: term(), timeout()) :: :ok | {:error, any()}
@callback del_dir(channel_pid :: pid(), path :: charlist(), timeout()) :: :ok | {:error, any()}
@callback delete(channel_pid :: pid(), path :: charlist(), timeout()) :: :ok | {:error, any()}
@callback list_dir(channel_pid :: pid(), path :: charlist(), timeout()) :: {:ok, [charlist()]} | {:error, any()}
@callback make_dir(channel_pid :: pid(), path :: charlist(), timeout()) :: :ok | {:error, any()}
@callback make_link( channel_pid :: pid(), symlink_path :: charlist(), target_path :: charlist(), timeout() ) :: :ok | {:error, any()}
@callback open( channel_pid :: pid(), path :: charlist(), modes :: [SFTPClient.access_mode()], timeout() ) :: {:ok, term()} | {:error, any()}
@callback opendir(channel_pid :: pid(), path :: charlist(), timeout()) :: {:ok, term()} | {:error, any()}
@callback read( channel_pid :: pid(), handle :: term(), length :: non_neg_integer(), timeout() ) :: {:ok, binary()} | :eof | {:error, any()}
@callback read_file(channel_pid :: pid(), path :: charlist(), timeout()) :: {:ok, binary()} | {:error, any()}
@callback read_file_info(channel_pid :: pid(), path :: charlist(), timeout()) :: {:ok, term()} | {:error, any()}
@callback read_link(channel_pid :: pid(), path :: charlist(), timeout()) :: {:ok, charlist()} | {:error, any()}
@callback read_link_info(channel_pid :: pid(), path :: charlist(), timeout()) :: {:ok, term()} | {:error, any()}
@callback readdir(channel_pid :: pid(), handle :: term(), timeout()) :: {:ok, binary()} | {:error, any()}
@callback rename( channel_pid :: pid(), old_path :: charlist(), new_path :: charlist(), timeout() ) :: :ok | {:error, any()}
@callback start_channel( host :: charlist(), port :: non_neg_integer(), opts :: Keyword.t() ) :: {:ok, pid(), pid()} | {:error, any()}
@callback stop_channel(channel_pid :: pid()) :: :ok
@callback write(channel_pid :: pid(), path :: charlist(), data :: binary(), timeout()) :: :ok | {:error, any()}
@callback write_file( channel_pid :: pid(), path :: charlist(), data :: [binary()], timeout() ) :: :ok | {:error, any()}