| /* |
| * 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.igfs; |
| |
| import java.net.URI; |
| import java.util.Collection; |
| import java.util.Map; |
| import org.apache.ignite.IgniteCheckedException; |
| import org.apache.ignite.IgniteException; |
| import org.apache.ignite.IgniteFileSystem; |
| import org.apache.ignite.configuration.FileSystemConfiguration; |
| import org.apache.ignite.igfs.IgfsBlockLocation; |
| import org.apache.ignite.igfs.IgfsFile; |
| import org.apache.ignite.igfs.IgfsInputStream; |
| import org.apache.ignite.igfs.IgfsMetrics; |
| import org.apache.ignite.igfs.IgfsMode; |
| import org.apache.ignite.igfs.IgfsOutputStream; |
| import org.apache.ignite.igfs.IgfsPath; |
| import org.apache.ignite.igfs.IgfsPathSummary; |
| import org.apache.ignite.igfs.mapreduce.IgfsRecordResolver; |
| import org.apache.ignite.igfs.mapreduce.IgfsTask; |
| import org.apache.ignite.igfs.secondary.IgfsSecondaryFileSystem; |
| import org.apache.ignite.internal.AsyncSupportAdapter; |
| import org.apache.ignite.internal.util.typedef.internal.U; |
| import org.apache.ignite.lang.IgniteFuture; |
| import org.apache.ignite.lang.IgniteUuid; |
| import org.jetbrains.annotations.Nullable; |
| |
| /** |
| * Igfs supporting asynchronous operations. |
| */ |
| public class IgfsAsyncImpl extends AsyncSupportAdapter<IgniteFileSystem> implements IgfsEx { |
| /** */ |
| private final IgfsImpl igfs; |
| |
| /** |
| * @param igfs Igfs. |
| */ |
| public IgfsAsyncImpl(IgfsImpl igfs) { |
| super(true); |
| |
| this.igfs = igfs; |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public void clear() { |
| try { |
| saveOrGet(igfs.clearAsync0()); |
| } |
| catch (IgniteCheckedException e) { |
| throw U.convertException(e); |
| } |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public IgniteFuture<Void> clearAsync() throws IgniteException { |
| return igfs.clearAsync(); |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public <T, R> R execute(IgfsTask<T, R> task, @Nullable IgfsRecordResolver rslvr, |
| Collection<IgfsPath> paths, @Nullable T arg) { |
| try { |
| return saveOrGet(igfs.executeAsync0(task, rslvr, paths, arg)); |
| } |
| catch (IgniteCheckedException e) { |
| throw U.convertException(e); |
| } |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public <T, R> IgniteFuture<R> executeAsync(IgfsTask<T, R> task, @Nullable IgfsRecordResolver rslvr, |
| Collection<IgfsPath> paths, @Nullable T arg) throws IgniteException { |
| return igfs.executeAsync(task, rslvr, paths, arg); |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public <T, R> R execute(IgfsTask<T, R> task, @Nullable IgfsRecordResolver rslvr, |
| Collection<IgfsPath> paths, boolean skipNonExistentFiles, long maxRangeLen, @Nullable T arg) { |
| try { |
| return saveOrGet(igfs.executeAsync0(task, rslvr, paths, skipNonExistentFiles, maxRangeLen, arg)); |
| } |
| catch (IgniteCheckedException e) { |
| throw U.convertException(e); |
| } |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public <T, R> IgniteFuture<R> executeAsync(IgfsTask<T, R> task, @Nullable IgfsRecordResolver rslvr, |
| Collection<IgfsPath> paths, boolean skipNonExistentFiles, long maxRangeLen, |
| @Nullable T arg) throws IgniteException { |
| return igfs.executeAsync(task, rslvr, paths, skipNonExistentFiles, maxRangeLen, arg); |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public <T, R> R execute(Class<? extends IgfsTask<T, R>> taskCls, |
| @Nullable IgfsRecordResolver rslvr, Collection<IgfsPath> paths, @Nullable T arg) { |
| try { |
| return saveOrGet(igfs.executeAsync0(taskCls, rslvr, paths, arg)); |
| } |
| catch (IgniteCheckedException e) { |
| throw U.convertException(e); |
| } |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public <T, R> IgniteFuture<R> executeAsync(Class<? extends IgfsTask<T, R>> taskCls, |
| @Nullable IgfsRecordResolver rslvr, Collection<IgfsPath> paths, @Nullable T arg) throws IgniteException { |
| return igfs.executeAsync(taskCls, rslvr, paths, arg); |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public <T, R> R execute(Class<? extends IgfsTask<T, R>> taskCls, |
| @Nullable IgfsRecordResolver rslvr, Collection<IgfsPath> paths, boolean skipNonExistentFiles, |
| long maxRangeLen, @Nullable T arg) { |
| try { |
| return saveOrGet(igfs.executeAsync0(taskCls, rslvr, paths, skipNonExistentFiles, maxRangeLen, arg)); |
| } |
| catch (IgniteCheckedException e) { |
| throw U.convertException(e); |
| } |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public <T, R> IgniteFuture<R> executeAsync(Class<? extends IgfsTask<T, R>> taskCls, |
| @Nullable IgfsRecordResolver rslvr, Collection<IgfsPath> paths, boolean skipNonExistentFiles, long maxRangeLen, |
| @Nullable T arg) throws IgniteException { |
| return igfs.executeAsync(taskCls, rslvr, paths, skipNonExistentFiles, maxRangeLen, arg); |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public void stop(boolean cancel) { |
| igfs.stop(cancel); |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public IgfsContext context() { |
| return igfs.context(); |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public IgfsInputStream open(IgfsPath path, int bufSize, |
| int seqReadsBeforePrefetch) { |
| return igfs.open(path, bufSize, seqReadsBeforePrefetch); |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public IgfsInputStream open(IgfsPath path) { |
| return igfs.open(path); |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public IgfsInputStream open(IgfsPath path, int bufSize) { |
| return igfs.open(path, bufSize); |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public IgfsStatus globalSpace() throws IgniteCheckedException { |
| return igfs.globalSpace(); |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public void globalSampling(@Nullable Boolean val) throws IgniteCheckedException { |
| igfs.globalSampling(val); |
| } |
| |
| /** {@inheritDoc} */ |
| @Nullable @Override public Boolean globalSampling() { |
| return igfs.globalSampling(); |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public long groupBlockSize() { |
| return igfs.groupBlockSize(); |
| } |
| |
| /** {@inheritDoc} */ |
| @Nullable @Override public String clientLogDirectory() { |
| return igfs.clientLogDirectory(); |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public void clientLogDirectory(String logDir) { |
| igfs.clientLogDirectory(logDir); |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public boolean evictExclude(IgfsPath path, boolean primary) { |
| return igfs.evictExclude(path, primary); |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public IgniteUuid nextAffinityKey() { |
| return igfs.nextAffinityKey(); |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public boolean isProxy(URI path) { |
| return igfs.isProxy(path); |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public String name() { |
| return igfs.name(); |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public FileSystemConfiguration configuration() { |
| return igfs.configuration(); |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public IgfsPathSummary summary(IgfsPath path) { |
| return igfs.summary(path); |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public IgfsOutputStream create(IgfsPath path, boolean overwrite) { |
| return igfs.create(path, overwrite); |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public IgfsOutputStream create(IgfsPath path, int bufSize, boolean overwrite, int replication, |
| long blockSize, @Nullable Map<String, String> props) { |
| return igfs.create(path, bufSize, overwrite, replication, blockSize, props); |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public IgfsOutputStream create(IgfsPath path, int bufSize, boolean overwrite, |
| @Nullable IgniteUuid affKey, int replication, long blockSize, @Nullable Map<String, String> props) { |
| return igfs.create(path, bufSize, overwrite, affKey, replication, blockSize, props); |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public IgfsOutputStream append(IgfsPath path, boolean create) { |
| return igfs.append(path, create); |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public IgfsOutputStream append(IgfsPath path, int bufSize, boolean create, |
| @Nullable Map<String, String> props) { |
| return igfs.append(path, bufSize, create, props); |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public void setTimes(IgfsPath path, long modificationTime, long accessTime) { |
| igfs.setTimes(path, modificationTime, accessTime); |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public Collection<IgfsBlockLocation> affinity(IgfsPath path, long start, long len) { |
| return igfs.affinity(path, start, len); |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public Collection<IgfsBlockLocation> affinity(IgfsPath path, long start, long len, long maxLen) { |
| return igfs.affinity(path, start, len, maxLen); |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public IgfsMetrics metrics() { |
| return igfs.metrics(); |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public void resetMetrics() { |
| igfs.resetMetrics(); |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public long size(IgfsPath path) { |
| return igfs.size(path); |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public boolean exists(IgfsPath path) { |
| return igfs.exists(path); |
| } |
| |
| /** {@inheritDoc} */ |
| @Nullable @Override public IgfsFile update(IgfsPath path, Map<String, String> props) { |
| return igfs.update(path, props); |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public void rename(IgfsPath src, IgfsPath dest) { |
| igfs.rename(src, dest); |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public boolean delete(IgfsPath path, boolean recursive) { |
| return igfs.delete(path, recursive); |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public void mkdirs(IgfsPath path) { |
| igfs.mkdirs(path); |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public void mkdirs(IgfsPath path, @Nullable Map<String, String> props) { |
| igfs.mkdirs(path, props); |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public Collection<IgfsPath> listPaths(IgfsPath path) { |
| return igfs.listPaths(path); |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public Collection<IgfsFile> listFiles(IgfsPath path) { |
| return igfs.listFiles(path); |
| } |
| |
| /** {@inheritDoc} */ |
| @Nullable @Override public IgfsFile info(IgfsPath path) { |
| return igfs.info(path); |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public IgfsMode mode(IgfsPath path) { |
| return igfs.mode(path); |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public long usedSpaceSize() { |
| return igfs.usedSpaceSize(); |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public IgfsSecondaryFileSystem asSecondary() { |
| return igfs.asSecondary(); |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public void await(IgfsPath... paths) { |
| igfs.await(paths); |
| } |
| } |