All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.voltdb.importer.ImportContext Maven / Gradle / Ivy

There is a newer version: 10.1.1
Show newest version
/* This file is part of VoltDB.
 * Copyright (C) 2008-2020 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 .
 */

package org.voltdb.importer;

import java.net.URI;
import java.util.Properties;
import java.util.Set;

import org.voltdb.InternalConnectionContext;
import org.voltdb.client.ProcedureCallback;

/**
 *
 * @author akhanzode
 */

public interface ImportContext extends InternalConnectionContext {

    /**
     * This is called to configure properties. Just save or configure anything you want here.
     * The readyForData() will be called to actually start processing the data.
     * @param p properties specified in the deployment.
     */
    public void configure(Properties p);
    /**
     * Called when cluster is ready to ingest data.
     */
    public void readyForData();
    /**
     * Called when stopping the node so the importer will cleanup
     */
    public void stop();

    /**
     * Call this to see if you need to exit.
     * @return
     */
    public boolean canContinue();

    /**
     * Call this to get the ingested data passed to procedure.
     * @param invocation indicating what kind of data is passed in for this.
     * @return true if successfully accepted the work.
     */
    public boolean callProcedure(Invocation invocation);

    /**
     * Call this to get the ingested data passed to procedure.
     * @param cb callback for results.
     * @param invocation indicating what kind of data is passed in for this.
     * @return true if successfully accepted the work.
     */
    public boolean callProcedure(ProcedureCallback cb, Invocation invocation);

    /**
     * This is the real handler dont need to call or extend anything
     * @param handler
     * @throws java.lang.Exception
     */
    public void setHandler(Object handler) throws Exception;

    /**
     * Give a friendly name for the importer.
     * @return
     */
    @Override
    public String getName();

    /**
     * This is to tell importer system that this importer runs on all nodes. Default is true.
     * If this is false importer system will ask and allocate resources that you are responsible for
     * @return
     */
    public boolean isRunEveryWhere();

    /**
     * This is asked if runEveryWhere is false and importer knows what resources its can act on.
     * Based on the configuration of cluster and partitions present it will divide the work and hand down the importer
     * list of resources it should handle. The implementation should honor and act on those resources. In case if node
     * failure a update notification will be sent to start acting on more resources.
     * @return list of resources identifier that will be persisted in Volt ZK for watching.
     * TODO make sure to get correct naming.
     */
    public Set getAllResponsibleResources();

    /**
     * log info message
     * @param message message to log to Volt server logging system.
     */
    public void info(String message);

    /**
     * log error message
     * @param format message to log to Volt server logging system.
     * @param t throwable to be logged.
     * @param args arguments to formatter
     */
    public void error(Throwable t, String format, Object...args);

    /**
     * log error message
     * @param message message to log to Volt server logging system.
     */
    public void error(String message);

    /**
     * log error message
     * @param message message to log to Volt server logging system.
     * @param t cause of error
     */
    public void error(String message, Throwable t);

    /**
     * log warn message
     * @param message message to log to Volt server logging system.
     */
    public void warn(String message);

    public void warn(Throwable t, String format, Object...args);

    /**
     * log debug message
     * @param message message to log to Volt server logging system.
     */
    public void debug(String message);

    public boolean isDebugEnabled();
    public boolean isTraceEnabled();
    public boolean isInfoEnabled();

    public void trace(String message);
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy