    001    /*
    002     * Copyright (C) 2011 The Guava Authors
    003     *
    004     * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
    005     * in compliance with the License. You may obtain a copy of the License at
    006     *
    007     * http://www.apache.org/licenses/LICENSE-2.0
    008     *
    009     * Unless required by applicable law or agreed to in writing, software distributed under the License
    010     * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
    011     * or implied. See the License for the specific language governing permissions and limitations under
    012     * the License.
    013     */
    014
    015    package com.google.common.hash;
    016
    017    import com.google.common.annotations.Beta;
    018
    019    import java.io.Serializable;
    020
    021    /**
    022     * An object which can send data from an object of type {@code T} into a {@code PrimitiveSink}.
    023     *
    024     * @author Dimitris Andreou
    025     * @since 11.0
    026     */
    027    @Beta
    028    public interface Funnel<T> extends Serializable {
    029
    030      /**
    031       * Sends a stream of data from the {@code from} object into the sink {@code into}. There
    032       * is no requirement that this data be complete enough to fully reconstitute the object
    033       * later.
    034       *
    035       * @since 12.0 (in 11.0 version, {@code PrimitiveSink} was still called {@code Sink})
    036       */
    037      void funnel(T from, PrimitiveSink into);
    038    }