package rocks.inspectit.agent.java.tracing.core.adapter;
import rocks.inspectit.agent.java.config.impl.RegisteredSensorConfig;
/**
* Server adapter provider can deliver {@link ServerRequestAdapter} and {@link ResponseAdapter}
* based on the method invocation object, parameters and the result.
*
* @author Ivan Senic
*
*/
public interface ServerAdapterProvider {
/**
* Returns {@link ServerRequestAdapter} to handle the request when the one is available on the
* start of the instrumented method. Implementor should used passed object and parameters in
* order to create correct requestAdapter.
*
* @param object
* Object on with method was invoked.
* @param parameters
* Method invocation parameters.
* @param rsc
* {@link RegisteredSensorConfig}.
* @return {@link ServerRequestAdapter}.
*/
ServerRequestAdapter<?> getServerRequestAdapter(Object object, Object[] parameters, RegisteredSensorConfig rsc);
/**
* Returns {@link ResponseAdapter} to handle the request. Implementor should used passed object
* and parameters in order to create correct requestAdapter.
*
* @param object
* Object on with method was invoked.
* @param parameters
* Method invocation parameters.
* @param result
* Result of the method invocation.
* @param rsc
* {@link RegisteredSensorConfig}.
* @return {@link ClientRequestAdapter}.
*/
ResponseAdapter getServerResponseAdapter(Object object, Object[] parameters, Object result, RegisteredSensorConfig rsc);
}