/* * 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.hash; /** * {@link HashQueryContext} + {@link AutoCloseable}, for external {@link ChronicleHash} queries * in <i>try-with-resources</i> blocks. * * @param <K> the hash key type * @see ChronicleHash#queryContext(Object) */ public interface ExternalHashQueryContext<K> extends HashQueryContext<K>, AutoCloseable { /** * Closes the query context, automatically releases all locks and disposes all resources, * acquired during the query operation. I. e. you shouldn't release locks manually in the end * of try-with-resources statement: <pre>{@code * try (ExternalHashQueryContext<K> q = hash.queryContext(key)) * q.writeLock().lock(); * // ...make a query under exclusive lock * // NOT NEEDED - q.readLock().unlock(); * }}</pre> */ @Override void close(); }