/*
* Copyright (C) 2012, 2016 higherfrequencytrading.com
* Copyright (C) 2016 Roman Leventov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package net.openhft.chronicle.set;
import net.openhft.chronicle.hash.ChronicleHashBuilderPrivateAPI;
import net.openhft.chronicle.hash.Data;
import net.openhft.chronicle.hash.serialization.impl.SerializationBuilder;
import net.openhft.chronicle.map.replication.MapRemoteOperations;
import net.openhft.chronicle.map.replication.MapRemoteQueryContext;
import net.openhft.chronicle.set.replication.SetRemoteOperations;
import net.openhft.chronicle.set.replication.SetRemoteQueryContext;
import java.util.concurrent.TimeUnit;
class ChronicleSetBuilderPrivateAPI<K>
implements ChronicleHashBuilderPrivateAPI<K, SetRemoteOperations<K, ?>> {
private final ChronicleHashBuilderPrivateAPI<K, MapRemoteOperations<K, DummyValue, ?>> mapB;
public ChronicleSetBuilderPrivateAPI(
ChronicleHashBuilderPrivateAPI<K, MapRemoteOperations<K, DummyValue, ?>> mapB) {
this.mapB = mapB;
}
@Override
public String name() {
return mapB.name();
}
@Override
public SerializationBuilder<K> keyBuilder() {
return mapB.keyBuilder();
}
@Override
public int segmentEntrySpaceInnerOffset() {
return mapB.segmentEntrySpaceInnerOffset();
}
@Override
public long chunkSize() {
return mapB.chunkSize();
}
@Override
public int maxChunksPerEntry() {
return mapB.maxChunksPerEntry();
}
@Override
public long entriesPerSegment() {
return mapB.entriesPerSegment();
}
@Override
public long tierHashLookupCapacity() {
return mapB.tierHashLookupCapacity();
}
@Override
public long actualChunksPerSegmentTier() {
return mapB.actualChunksPerSegmentTier();
}
@Override
public int segmentHeaderSize() {
return mapB.segmentHeaderSize();
}
@Override
public int actualSegments() {
return mapB.actualSegments();
}
@Override
public long maxExtraTiers() {
return mapB.maxExtraTiers();
}
@Override
public boolean aligned64BitMemoryOperationsAtomic() {
return mapB.aligned64BitMemoryOperationsAtomic();
}
@Override
public boolean checksumEntries() {
return mapB.checksumEntries();
}
@Override
public void replication(byte identifier) {
mapB.replication(identifier);
}
@Override
public void cleanupRemovedEntries(boolean cleanupRemovedEntries) {
mapB.cleanupRemovedEntries(cleanupRemovedEntries);
}
@Override
public void removedEntryCleanupTimeout(long removedEntryCleanupTimeout, TimeUnit unit) {
mapB.removedEntryCleanupTimeout(removedEntryCleanupTimeout, unit);
}
@Override
public void remoteOperations(SetRemoteOperations<K, ?> remoteOperations) {
mapB.remoteOperations(new MapRemoteOperations<K, DummyValue, Object>() {
@Override
public void remove(MapRemoteQueryContext<K, DummyValue, Object> q) {
//noinspection unchecked
remoteOperations.remove((SetRemoteQueryContext) q);
}
@Override
public void put(
MapRemoteQueryContext<K, DummyValue, Object> q, Data<DummyValue> newValue) {
//noinspection unchecked
remoteOperations.put((SetRemoteQueryContext) q);
}
});
}
}