/* This file is part of VoltDB. * Copyright (C) 2008-2017 VoltDB Inc. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * 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 Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with VoltDB. If not, see <http://www.gnu.org/licenses/>. */ package org.voltdb; import org.voltdb.client.ProcedureCallback; import org.voltdb.importer.AbstractImporter; import org.voltdb.importer.ImporterServerAdapter; import org.voltdb.importer.ImporterStatsCollector; import java.util.function.Function; /** * Implementation that uses the server internal classes to execute procedures and * to report information for statistics collection. */ public class ImporterServerAdapterImpl implements ImporterServerAdapter { private ImporterStatsCollector m_statsCollector; public ImporterServerAdapterImpl(ImporterStatsCollector statsCollector) { m_statsCollector = statsCollector; } /** * Returns true if a table with the given name exists in the server catalog. */ public boolean hasTable(String name) { return getInternalConnectionHandler().hasTable(name); } @Override public boolean callProcedure(AbstractImporter importer, Function<Integer, Boolean> backPressurePredicate, ProcedureCallback procCallback, String proc, Object... fieldList) { return getInternalConnectionHandler() .callProcedure(importer, backPressurePredicate, m_statsCollector, procCallback, proc, fieldList); } private InternalConnectionHandler getInternalConnectionHandler() { return VoltDB.instance().getClientInterface().getInternalConnectionHandler(); } @Override public void reportFailure(String importerName, String procName, boolean decrementPending) { m_statsCollector.reportFailure(importerName, procName, decrementPending); } @Override public void reportQueued(String importerName, String procName) { m_statsCollector.reportQueued(importerName, procName); } }