/*
* Copyright 2011 Red Hat, Inc. and/or its affiliates.
*
* This 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 2.1 of
* the License, or (at your option) any later version.
*
* This software 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 library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
* 02110-1301 USA
*/
package org.infinispan.configuration.cache;
import org.infinispan.configuration.cache.FileCacheStoreConfigurationBuilder.FsyncMode;
import org.infinispan.util.TypedProperties;
/**
* File cache store configuration.
*
* @author Galder ZamarreƱo
* @since 5.1
*/
public class FileCacheStoreConfiguration extends AbstractLockSupportCacheStoreConfiguration {
private final String location;
private final long fsyncInterval;
private final FsyncMode fsyncMode;
private final int streamBufferSize;
FileCacheStoreConfiguration(String location, long fsyncInterval,
FsyncMode fsyncMode, int streamBufferSize, long lockAcquistionTimeout,
int lockConcurrencyLevel, boolean purgeOnStartup, boolean purgeSynchronously,
int purgerThreads, boolean fetchPersistentState, boolean ignoreModifications,
TypedProperties properties, AsyncLoaderConfiguration async,
SingletonStoreConfiguration singletonStore) {
super(lockAcquistionTimeout, lockConcurrencyLevel, purgeOnStartup,
purgeSynchronously, purgerThreads, fetchPersistentState,
ignoreModifications, properties, async, singletonStore);
this.location = location;
this.fsyncInterval = fsyncInterval;
this.fsyncMode = fsyncMode;
this.streamBufferSize = streamBufferSize;
}
public long fsyncInterval() {
return fsyncInterval;
}
public FsyncMode fsyncMode() {
return fsyncMode;
}
public String location() {
return location;
}
public int streamBufferSize() {
return streamBufferSize;
}
@Override
public String toString() {
return "FileCacheStoreConfiguration{" +
"fsyncInterval=" + fsyncInterval +
", location='" + location + '\'' +
", fsyncMode=" + fsyncMode +
", streamBufferSize=" + streamBufferSize +
", lockAcquistionTimeout=" + lockAcquistionTimeout() +
", lockConcurrencyLevel=" + lockConcurrencyLevel() +
", purgeOnStartup=" + purgeOnStartup() +
", purgeSynchronously=" + purgeSynchronously() +
", purgerThreads=" + purgerThreads() +
", fetchPersistentState=" + fetchPersistentState() +
", ignoreModifications=" + ignoreModifications() +
", properties=" + properties() +
", async=" + async() +
", singletonStore=" + singletonStore() +
'}';
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
if (!super.equals(o)) return false;
FileCacheStoreConfiguration that = (FileCacheStoreConfiguration) o;
if (fsyncInterval != that.fsyncInterval) return false;
if (streamBufferSize != that.streamBufferSize) return false;
if (fsyncMode != that.fsyncMode) return false;
if (location != null ? !location.equals(that.location) : that.location != null)
return false;
return true;
}
@Override
public int hashCode() {
int result = super.hashCode();
result = 31 * result + (location != null ? location.hashCode() : 0);
result = 31 * result + (int) (fsyncInterval ^ (fsyncInterval >>> 32));
result = 31 * result + (fsyncMode != null ? fsyncMode.hashCode() : 0);
result = 31 * result + streamBufferSize;
return result;
}
}