/* * 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 org.apache.ignite.IgniteCheckedException; import org.apache.ignite.internal.IgniteInternalFuture; import org.apache.ignite.internal.processors.igfs.IgfsModeResolver; import org.jetbrains.annotations.Nullable; import java.io.IOException; /** * Extended IGFS server interface. */ public interface HadoopIgfsEx extends HadoopIgfs { /** * Adds event listener that will be invoked when connection with server is lost or remote error has occurred. * If connection is closed already, callback will be invoked synchronously inside this method. * * @param delegate Stream delegate. * @param lsnr Event listener. */ public void addEventListener(HadoopIgfsStreamDelegate delegate, HadoopIgfsStreamEventListener lsnr); /** * Removes event listener that will be invoked when connection with server is lost or remote error has occurred. * * @param delegate Stream delegate. */ public void removeEventListener(HadoopIgfsStreamDelegate delegate); /** * Asynchronously reads specified amount of bytes from opened input stream. * * @param delegate Stream delegate. * @param pos Position to read from. * @param len Data length to read. * @param outBuf Optional output buffer. If buffer length is less then {@code len}, all remaining * bytes will be read into new allocated buffer of length {len - outBuf.length} and this buffer will * be the result of read future. * @param outOff Output offset. * @param outLen Output length. * @return Read data. */ public IgniteInternalFuture<byte[]> readData(HadoopIgfsStreamDelegate delegate, long pos, int len, @Nullable final byte[] outBuf, final int outOff, final int outLen); /** * Writes data to the stream with given streamId. This method does not return any future since * no response to write request is sent. * * @param delegate Stream delegate. * @param data Data to write. * @param off Offset. * @param len Length. * @throws IOException If failed. */ public void writeData(HadoopIgfsStreamDelegate delegate, byte[] data, int off, int len) throws IOException; /** * Close server stream. * * @param delegate Stream delegate. * @throws IOException If failed. */ public void closeStream(HadoopIgfsStreamDelegate delegate) throws IOException; /** * Flush output stream. * * @param delegate Stream delegate. * @throws IOException If failed. */ public void flush(HadoopIgfsStreamDelegate delegate) throws IOException; /** * The user this Igfs instance works on behalf of. * @return the user name. */ public String user(); /** * @return Mode resolver. * @throws IgniteCheckedException On error. */ IgfsModeResolver modeResolver() throws IgniteCheckedException; }