package ru.kirillius.pf.sdn.api.flow;

import ru.kirillius.pf.sdn.api.properties.PropertyDescriptor;

import java.util.List;
import java.util.Map;

/**
 * Интерфейс, описывающий исполняемую функцию для Flow
 */
public interface FlowFunction {
    void apply(CallContext context);

    Map<String, PropertyDescriptor> getProperties();

    boolean hasInputs();

    boolean hasOutputs();

    int getInputCount();

    int getOutputCount();

    List<String> getInputNames();

    List<String> getOutputNames();
}
