io.hotmoka.node.local.AbstractStore Maven / Gradle / Ivy
/*
Copyright 2024 Fausto Spoto
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 io.hotmoka.node.local;
import io.hotmoka.annotations.Immutable;
import io.hotmoka.node.local.api.LocalNodeConfig;
import io.hotmoka.node.local.api.StoreException;
import io.hotmoka.node.local.internal.AbstractStoreImpl;
/**
* A partial store of a node. It is a container of request/response pairs.
* Stores are immutable and consequently thread-safe.
*
* @param the type of the node having this store
* @param the type of the configuration of the node having this store
* @param the type of this store
* @param the type of the store transformations that can be started from this store
*/
@Immutable
public abstract class AbstractStore, C extends LocalNodeConfig, S extends AbstractStore, T extends AbstractStoreTransformation> extends AbstractStoreImpl {
/**
* Creates an empty store.
*
* @param node the node for which the store is created
* @throws StoreException if the operation cannot be completed correctly
*/
protected AbstractStore(N node) throws StoreException {
super(node);
}
/**
* Creates a clone of a store, up to the cache.
*
* @param toClone the store to clone
* @param cache the cache to use in the cloned store
*/
protected AbstractStore(AbstractStore toClone, StoreCache cache) {
super(toClone, cache);
}
}