package net.onrc.onos.api.newintent; import java.util.Set; /** * Service for application submitting or withdrawing their intents. */ public interface IntentService { /** * Submits an intent into the system. * * This is an asynchronous request meaning that any compiling * or installation activities may be done at later time. * * @param intent intent to be submitted */ void submit(Intent intent); /** * Withdraws an intent from the system. * * This is an asynchronous request meaning that the environment * may be affected at later time. * * @param intent intent to be withdrawn */ void withdraw(Intent intent); /** * Submits a batch of submit & withdraw operations. Such a batch is * assumed to be processed together. * * This is an asynchronous request meaning that the environment * may be affected at later time. * * @param operations batch of intent operations */ void execute(IntentOperations operations); /** * Returns immutable set of intents currently in the system. * * @return set of intents */ Set<Intent> getIntents(); /** * Retrieves the intent specified by its identifier. * * @param id intent identifier * @return the intent or null if one with the given identifier is not found */ Intent getIntent(IntentId id); /** * Retrieves the state of an intent by its identifier. * * @param id intent identifier * @return the intent state or null if one with the given identifier is not found */ IntentState getIntentState(IntentId id); /** * Adds the specified listener for intent events. * * @param listener listener to be added */ void addListener(IntentEventListener listener); /** * Removes the specified listener for intent events. * * @param listener listener to be removed */ void removeListener(IntentEventListener listener); }