/*
* Copyright 2010 LinkedIn, Inc
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package voldemort.store.routed.action;
import voldemort.store.routed.Pipeline;
import voldemort.store.routed.Pipeline.Event;
import voldemort.store.routed.Pipeline.Operation;
/**
* An Action is executed in response to the {@link Pipeline} receiving an
* {@link Event}. An Action is a discrete portion of logic that forms part of
* the overall process that executes a given operation. There's no clear
* standard about how much or how little logic is performed in a given Action,
* but there are intuitive separations in the logic that form natural
* boundaries.
*
* <p/>
*
* Actions are mapped to events by the {@link Pipeline} via the
* {@link Pipeline#addEventAction(Event, Action)} method.
*
* @see Pipeline#addEventAction(Event, Action)
*/
public interface Action {
/**
* Executes some portion of the overall logic in the routing pipeline.
*
* @param pipeline {@link Pipeline} instance of which this action is a part,
* used for adding events to the event queue or getting the
* {@link Operation} that resulted in the action being called
*/
public void execute(Pipeline pipeline);
}