| /* |
| * Licensed to the Apache Software Foundation (ASF) under one or more |
| * contributor license agreements. See the NOTICE file distributed with |
| * this work for additional information regarding copyright ownership. |
| * The ASF licenses this file to You under the Apache License, Version 2.0 |
| * (the "License"); you may not use this file except in compliance with |
| * the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| package org.apache.ignite.internal.processors.hadoop.impl.igfs; |
| |
| import java.io.IOException; |
| import java.util.Collection; |
| import java.util.Map; |
| import org.apache.ignite.IgniteCheckedException; |
| import org.apache.ignite.igfs.IgfsBlockLocation; |
| import org.apache.ignite.igfs.IgfsFile; |
| import org.apache.ignite.igfs.IgfsPath; |
| import org.apache.ignite.igfs.IgfsPathSummary; |
| import org.apache.ignite.internal.processors.igfs.IgfsHandshakeResponse; |
| import org.apache.ignite.internal.processors.igfs.IgfsStatus; |
| import org.jetbrains.annotations.Nullable; |
| |
| /** |
| * Facade for communication with grid. |
| */ |
| public interface HadoopIgfs { |
| /** |
| * Perform handshake. |
| * |
| * @param logDir Log directory. |
| * @return Future with handshake result. |
| * @throws IgniteCheckedException If failed. |
| */ |
| public IgfsHandshakeResponse handshake(String logDir) throws IgniteCheckedException, IOException; |
| |
| /** |
| * Close connection. |
| * |
| * @param force Force flag. |
| */ |
| public void close(boolean force); |
| |
| /** |
| * Command to retrieve file info for some IGFS path. |
| * |
| * @param path Path to get file info for. |
| * @return Future for info operation. |
| * @throws IgniteCheckedException If failed. |
| */ |
| public IgfsFile info(IgfsPath path) throws IgniteCheckedException, IOException; |
| |
| /** |
| * Command to update file properties. |
| * |
| * @param path IGFS path to update properties. |
| * @param props Properties to update. |
| * @return Future for update operation. |
| * @throws IgniteCheckedException If failed. |
| */ |
| public IgfsFile update(IgfsPath path, Map<String, String> props) throws IgniteCheckedException, IOException; |
| |
| /** |
| * Sets last access time and last modification time for a file. |
| * |
| * @param path Path to update times. |
| * @param accessTime Last access time to set. |
| * @param modificationTime Last modification time to set. |
| * @throws IgniteCheckedException If failed. |
| */ |
| public Boolean setTimes(IgfsPath path, long accessTime, long modificationTime) throws IgniteCheckedException, |
| IOException; |
| |
| /** |
| * Command to rename given path. |
| * |
| * @param src Source path. |
| * @param dest Destination path. |
| * @return Future for rename operation. |
| * @throws IgniteCheckedException If failed. |
| */ |
| public Boolean rename(IgfsPath src, IgfsPath dest) throws IgniteCheckedException, IOException; |
| |
| /** |
| * Command to delete given path. |
| * |
| * @param path Path to delete. |
| * @param recursive {@code True} if deletion is recursive. |
| * @return Future for delete operation. |
| * @throws IgniteCheckedException If failed. |
| */ |
| public Boolean delete(IgfsPath path, boolean recursive) throws IgniteCheckedException, IOException; |
| |
| /** |
| * Command to get affinity for given path, offset and length. |
| * |
| * @param path Path to get affinity for. |
| * @param start Start position (offset). |
| * @param len Data length. |
| * @return Future for affinity command. |
| * @throws IgniteCheckedException If failed. |
| */ |
| public Collection<IgfsBlockLocation> affinity(IgfsPath path, long start, long len) throws IgniteCheckedException, |
| IOException; |
| |
| /** |
| * Gets path summary. |
| * |
| * @param path Path to get summary for. |
| * @return Future that will be completed when summary is received. |
| * @throws IgniteCheckedException If failed. |
| */ |
| public IgfsPathSummary contentSummary(IgfsPath path) throws IgniteCheckedException, IOException; |
| |
| /** |
| * Command to create directories. |
| * |
| * @param path Path to create. |
| * @return Future for mkdirs operation. |
| * @throws IgniteCheckedException If failed. |
| */ |
| public Boolean mkdirs(IgfsPath path, Map<String, String> props) throws IgniteCheckedException, IOException; |
| |
| /** |
| * Command to get list of files in directory. |
| * |
| * @param path Path to list. |
| * @return Future for listFiles operation. |
| * @throws IgniteCheckedException If failed. |
| */ |
| public Collection<IgfsFile> listFiles(IgfsPath path) throws IgniteCheckedException, IOException; |
| |
| /** |
| * Command to get directory listing. |
| * |
| * @param path Path to list. |
| * @return Future for listPaths operation. |
| * @throws IgniteCheckedException If failed. |
| */ |
| public Collection<IgfsPath> listPaths(IgfsPath path) throws IgniteCheckedException, IOException; |
| |
| /** |
| * Performs status request. |
| * |
| * @return Status response. |
| * @throws IgniteCheckedException If failed. |
| */ |
| public IgfsStatus fsStatus() throws IgniteCheckedException, IOException; |
| |
| /** |
| * Command to open file for reading. |
| * |
| * @param path File path to open. |
| * @return Future for open operation. |
| * @throws IgniteCheckedException If failed. |
| */ |
| public HadoopIgfsStreamDelegate open(IgfsPath path) throws IgniteCheckedException, IOException; |
| |
| /** |
| * Command to open file for reading. |
| * |
| * @param path File path to open. |
| * @return Future for open operation. |
| * @throws IgniteCheckedException If failed. |
| */ |
| public HadoopIgfsStreamDelegate open(IgfsPath path, int seqReadsBeforePrefetch) throws IgniteCheckedException, |
| IOException; |
| |
| /** |
| * Command to create file and open it for output. |
| * |
| * @param path Path to file. |
| * @param overwrite If {@code true} then old file contents will be lost. |
| * @param colocate If {@code true} and called on data node, file will be written on that node. |
| * @param replication Replication factor. |
| * @param props File properties for creation. |
| * @return Stream descriptor. |
| * @throws IgniteCheckedException If failed. |
| */ |
| public HadoopIgfsStreamDelegate create(IgfsPath path, boolean overwrite, boolean colocate, |
| int replication, long blockSize, @Nullable Map<String, String> props) throws IgniteCheckedException, IOException; |
| |
| /** |
| * Open file for output appending data to the end of a file. |
| * |
| * @param path Path to file. |
| * @param create If {@code true}, file will be created if does not exist. |
| * @param props File properties. |
| * @return Stream descriptor. |
| * @throws IgniteCheckedException If failed. |
| */ |
| public HadoopIgfsStreamDelegate append(IgfsPath path, boolean create, |
| @Nullable Map<String, String> props) throws IgniteCheckedException, IOException; |
| } |