package org.distributeme.core.concurrencycontrol;
import org.distributeme.core.ClientSideCallContext;
import org.distributeme.core.ServerSideCallContext;
/**
* This interface allows the customer to control concurrent access to the services.
*
* @author lrosenberg
* @version $Id: $Id
*/
public interface ConcurrencyControlStrategy {
/**
* Called by the stub before the call is executed.
*
* @param context a {@link org.distributeme.core.ClientSideCallContext} object.
*/
void notifyClientSideCallStarted(ClientSideCallContext context);
/**
* Called by the stub after the call is finished.
*
* @param context a {@link org.distributeme.core.ClientSideCallContext} object.
*/
void notifyClientSideCallFinished(ClientSideCallContext context);
/**
* Called by the skeleton before the call is executed.
*
* @param context a {@link org.distributeme.core.ServerSideCallContext} object.
*/
void notifyServerSideCallStarted(ServerSideCallContext context);
/**
* Called by the skeleton after the call is finished.
*
* @param context a {@link org.distributeme.core.ServerSideCallContext} object.
*/
void notifyServerSideCallFinished(ServerSideCallContext context);
/**
* Called shortly after the initialization to customize this strategy according to the parameter in the annotation.
*
* @param parameter a {@link java.lang.String} object.
*/
void customize(String parameter);
}