package net.onrc.onos.core.flowprogrammer;

import java.util.concurrent.Future;

import net.floodlightcontroller.core.IOFSwitch;
import net.floodlightcontroller.core.module.IFloodlightService;

/**
 * FlowSyncService is a service to synchronize GraphDB and switch's flow table.
 * FlowSyncService offers APIs to trigger and interrupt synchronization explicitly.
 */
public interface IFlowSyncService extends IFloodlightService {
    public Future<SyncResult> synchronize(IOFSwitch sw);

    public void interrupt(IOFSwitch sw);

    public class SyncResult {
        public final int flowAdded;
        public final int flowRemoved;
        public final int flowSkipped;

        public SyncResult(int added, int removed, int skipped) {
            flowAdded = added;
            flowRemoved = removed;
            flowSkipped = skipped;
        }
    }
}
