blob: 6bfc1fe3ba39c3ee348dce730f68eee2ac760729 [file] [log] [blame]
/*
* 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.geode.internal.cache.snapshot;
import org.apache.geode.cache.snapshot.SnapshotFilter;
import org.apache.geode.cache.snapshot.SnapshotOptions;
/**
* Implements the snapshot options.
*
*
* @param <K> the key type
* @param <V> the value type
*/
public class SnapshotOptionsImpl<K, V> implements SnapshotOptions<K, V> {
private static final long serialVersionUID = 1L;
/** the entry filter */
private volatile SnapshotFilter<K, V> filter;
/** true if callbacks should be invoked on load */
private volatile boolean invokeCallbacks;
/** true if parallel mode is enabled */
private volatile boolean parallel;
/** the file mapper, or null if parallel mode is not enabled */
private volatile SnapshotFileMapper mapper;
public SnapshotOptionsImpl() {
filter = null;
invokeCallbacks = false;
}
@Override
public SnapshotOptions<K, V> setFilter(SnapshotFilter<K, V> filter) {
this.filter = filter;
return this;
}
@Override
public SnapshotFilter<K, V> getFilter() {
return filter;
}
@Override
public SnapshotOptions<K, V> invokeCallbacks(boolean invokeCallbacks) {
this.invokeCallbacks = invokeCallbacks;
return this;
}
@Override
public boolean shouldInvokeCallbacks() {
return this.invokeCallbacks;
}
@Override
public SnapshotOptions<K, V> setParallelMode(boolean parallel) {
this.parallel = parallel;
return this;
}
@Override
public boolean isParallelMode() {
return parallel;
}
/**
* Overrides the default file mapping for parallel import and export operations.
*
* @param mapper the custom mapper, or null to use the default mapping
* @return the snapshot options
* @see #setParallelMode(boolean)
*/
public SnapshotOptions<K, V> setMapper(SnapshotFileMapper mapper) {
this.mapper = mapper;
return this;
}
/**
* Returns the snapshot file mapper for parallel import and export.
*
* @return the mapper
* @see #setParallelMode(boolean)
*/
public SnapshotFileMapper getMapper() {
if (mapper == null) {
mapper = isParallelMode() ? new ParallelSnapshotFileMapper()
: RegionSnapshotServiceImpl.LOCAL_MAPPER;
}
return mapper;
}
@Override
public String toString() {
StringBuffer buf = new StringBuffer();
buf.append("SnapshotOptionsImpl@").append(System.identityHashCode(this)).append(": ")
.append("parallel=").append(parallel).append("; invokeCallbacks=").append(invokeCallbacks)
.append("; filter=").append(filter).append("; mapper=").append(mapper);
return buf.toString();
}
}