All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.apache.flink.runtime.state.internal.InternalKvState Maven / Gradle / Ivy

/*
 * 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.flink.runtime.state.internal;

import org.apache.flink.api.common.state.State;
import org.apache.flink.api.common.typeutils.TypeSerializer;

/**
 * The {@code InternalKvState} is the root of the internal state type hierarchy, similar to the
 * {@link State} being the root of the public API state hierarchy.
 * 
 * 

The internal state classes give access to the namespace getters and setters and access to * additional functionality, like raw value access or state merging. * *

The public API state hierarchy is intended to be programmed against by Flink applications. * The internal state hierarchy holds all the auxiliary methods that are used by the runtime and not * intended to be used by user applications. These internal methods are considered of limited use to users and * only confusing, and are usually not regarded as stable across releases. * *

Each specific type in the internal state hierarchy extends the type from the public * state hierarchy: * *

 *             State
 *               |
 *               +-------------------InternalKvState
 *               |                         |
 *          MergingState                   |
 *               |                         |
 *               +-----------------InternalMergingState
 *               |                         |
 *      +--------+------+                  |
 *      |               |                  |
 * ReducingState    ListState        +-----+-----------------+
 *      |               |            |                       |
 *      +-----------+   +-----------   -----------------InternalListState
 *                  |                |
 *                  +---------InternalReducingState
 * 
* * @param The type of key the state is associated to * @param The type of the namespace * @param The type of values kept internally in state */ public interface InternalKvState extends State { /** * Returns the {@link TypeSerializer} for the type of key this state is associated to. */ TypeSerializer getKeySerializer(); /** * Returns the {@link TypeSerializer} for the type of namespace this state is associated to. */ TypeSerializer getNamespaceSerializer(); /** * Returns the {@link TypeSerializer} for the type of value this state holds. */ TypeSerializer getValueSerializer(); /** * Sets the current namespace, which will be used when using the state access methods. * * @param namespace The namespace. */ void setCurrentNamespace(N namespace); /** * Returns the serialized value for the given key and namespace. * *

If no value is associated with key and namespace, null * is returned. * *

TO IMPLEMENTERS: This method is called by multiple threads. Anything * stateful (e.g. serializers) should be either duplicated or protected from undesired * consequences of concurrent invocations. * * @param serializedKeyAndNamespace Serialized key and namespace * @param safeKeySerializer A key serializer which is safe to be used even in multi-threaded context * @param safeNamespaceSerializer A namespace serializer which is safe to be used even in multi-threaded context * @param safeValueSerializer A value serializer which is safe to be used even in multi-threaded context * @return Serialized value or null if no value is associated with the key and namespace. * * @throws Exception Exceptions during serialization are forwarded */ byte[] getSerializedValue( final byte[] serializedKeyAndNamespace, final TypeSerializer safeKeySerializer, final TypeSerializer safeNamespaceSerializer, final TypeSerializer safeValueSerializer) throws Exception; }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy