/* * Copyright 2016 higherfrequencytrading.com * * Licensed 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 net.openhft.chronicle.engine.map; import net.openhft.chronicle.engine.api.EngineReplication.ReplicationEntry; import net.openhft.chronicle.engine.api.map.KeyValueStore; import net.openhft.chronicle.engine.api.map.MapEvent; import net.openhft.chronicle.engine.api.pubsub.InvalidSubscriberException; import net.openhft.chronicle.engine.api.pubsub.SubscriptionConsumer; import net.openhft.chronicle.engine.api.tree.Asset; import net.openhft.chronicle.engine.api.tree.RequestContext; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.Iterator; import java.util.Map; /** * Created by peter on 22/05/15. */ public class AbstractKeyValueStore<K, V> implements KeyValueStore<K, V> { @NotNull public final KeyValueStore<K, V> kvStore; @NotNull final Asset asset; private final Class<K> keyType; private final Class<V> valueType; AbstractKeyValueStore(@NotNull RequestContext rc, @NotNull Asset asset, @NotNull KeyValueStore<K, V> kvStore) { assert asset != null; assert kvStore != null; keyType = rc.keyType(); valueType = rc.valueType(); this.asset = asset; this.kvStore = kvStore; } @NotNull @Override public KeyValueStore underlying() { return kvStore; } @Nullable @Override public V getAndPut(K key, V value) { return kvStore.getAndPut(key, value); } @Nullable @Override public V getAndRemove(K key) { return kvStore.getAndRemove(key); } @Nullable @Override public V getUsing(K key, Object value) { return kvStore.getUsing(key, value); } @Override public Iterator<Map.Entry<K, V>> entrySetIterator() { return kvStore.entrySetIterator(); } @Override public long longSize() { return kvStore.longSize(); } @Override public void keysFor(int segment, SubscriptionConsumer<K> kConsumer) throws InvalidSubscriberException { kvStore.keysFor(segment, kConsumer); } @Override public void entriesFor(int segment, SubscriptionConsumer<MapEvent<K, V>> kvConsumer) throws InvalidSubscriberException { kvStore.entriesFor(segment, kvConsumer); } @Override public Asset asset() { return kvStore.asset(); } @Override public void clear() { kvStore.clear(); } @Nullable @Override public V replace(K key, V value) { return kvStore.replace(key, value); } @Override public void close() { kvStore.close(); } @Override public boolean put(K key, V value) { return kvStore.put(key, value); } @Override public boolean remove(K key) { return kvStore.remove(key); } @Nullable @Override public V get(K key) { return kvStore.get(key); } @Override public boolean containsKey(K key) { return kvStore.containsKey(key); } @Override public boolean isReadOnly() { return kvStore.isReadOnly(); } @Override public int segments() { return kvStore.segments(); } @Override public int segmentFor(K key) { return kvStore.segmentFor(key); } @Override public boolean replaceIfEqual(K key, V oldValue, V newValue) { return kvStore.replaceIfEqual(key, oldValue, newValue); } @Override public boolean removeIfEqual(K key, V value) { return kvStore.removeIfEqual(key, value); } @Override public boolean isKeyType(Object key) { return kvStore.isKeyType(key); } @Nullable @Override public V putIfAbsent(K key, V value) { return kvStore.putIfAbsent(key, value); } @Override public boolean keyedView() { return kvStore.keyedView(); } @Override public boolean containsValue(final V value) { throw new UnsupportedOperationException("todo"); } @Override public Iterator<K> keySetIterator() { return kvStore.keySetIterator(); } public Class<K> keyType() { return keyType; } public Class<V> valueType() { return valueType; } @Override public void accept(final ReplicationEntry replicationEntry) { throw new UnsupportedOperationException("todo"); } }