/* * 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.shuffle.collections; import java.io.DataInput; import org.apache.ignite.IgniteCheckedException; import org.apache.ignite.internal.processors.hadoop.HadoopTaskContext; import org.apache.ignite.internal.processors.hadoop.HadoopTaskInput; import org.apache.ignite.internal.processors.hadoop.HadoopTaskOutput; import org.jetbrains.annotations.Nullable; /** * Multimap for hadoop intermediate results. */ @SuppressWarnings("PublicInnerClass") public interface HadoopMultimap extends AutoCloseable { /** * Incrementally visits all the keys and values in the map. * * @param ignoreLastVisited Flag indicating that visiting must be started from the beginning. * @param v Visitor. * @return {@code false} If visiting was impossible. */ public boolean visit(boolean ignoreLastVisited, Visitor v) throws IgniteCheckedException; /** * @param ctx Task context. * @return Adder. * @throws IgniteCheckedException If failed. */ public Adder startAdding(HadoopTaskContext ctx) throws IgniteCheckedException; /** * @param taskCtx Task context. * @return Task input. * @throws IgniteCheckedException If failed. */ public HadoopTaskInput input(HadoopTaskContext taskCtx) throws IgniteCheckedException; /** {@inheritDoc} */ @Override public void close(); /** * Adder. */ public interface Adder extends HadoopTaskOutput { /** * @param in Data input. * @param reuse Reusable key. * @return Key. * @throws IgniteCheckedException If failed. */ public Key addKey(DataInput in, @Nullable Key reuse) throws IgniteCheckedException; } /** * Key add values to. */ public interface Key { /** * @param val Value. */ public void add(Value val); } /** * Value. */ public interface Value { /** * @return Size in bytes. */ public int size(); /** * @param ptr Pointer. */ public void copyTo(long ptr); } /** * Key and values visitor. */ public interface Visitor { /** * @param keyPtr Key pointer. * @param keySize Key size. */ public void onKey(long keyPtr, int keySize) throws IgniteCheckedException; /** * @param valPtr Value pointer. * @param valSize Value size. */ public void onValue(long valPtr, int valSize) throws IgniteCheckedException; } }