}
final void delete(final YangInstanceIdentifier path) {
+ checkReadWrite();
checkNotSealed();
doDelete(path);
}
final void merge(final YangInstanceIdentifier path, final NormalizedNode<?, ?> data) {
+ checkReadWrite();
checkNotSealed();
doMerge(path, data);
}
final void write(final YangInstanceIdentifier path, final NormalizedNode<?, ?> data) {
+ checkReadWrite();
checkNotSealed();
doWrite(path, data);
}
return (SuccessorState) local;
}
+ private void checkReadWrite() {
+ if (isSnapshotOnly()) {
+ throw new UnsupportedOperationException("Transaction " + getIdentifier() + " is a read-only snapshot");
+ }
+ }
+
final void recordSuccessfulRequest(final @Nonnull TransactionRequest<?> req) {
successfulRequests.add(Verify.verifyNotNull(req));
}
* @return Future completion
*/
final ListenableFuture<Boolean> directCommit() {
+ checkReadWrite();
checkSealed();
// Precludes startReconnect() from interfering with the fast path
}
final void canCommit(final VotingFuture<?> ret) {
+ checkReadWrite();
checkSealed();
// Precludes startReconnect() from interfering with the fast path
}
final void preCommit(final VotingFuture<?> ret) {
+ checkReadWrite();
checkSealed();
final TransactionRequest<?> req = new TransactionPreCommitRequest(getIdentifier(), nextSequence(),
}
final void doCommit(final VotingFuture<?> ret) {
+ checkReadWrite();
checkSealed();
sendRequest(new TransactionDoCommitRequest(getIdentifier(), nextSequence(), localActor()), t -> {
}
}
+ abstract boolean isSnapshotOnly();
+
abstract void doDelete(final YangInstanceIdentifier path);
abstract void doMerge(final YangInstanceIdentifier path, final NormalizedNode<?, ?> data);