package com.alibaba.csp.sentinel.metric.extension.callback; import com.alibaba.csp.sentinel.context.Context; import com.alibaba.csp.sentinel.metric.extension.MetricExtensionProvider; import com.alibaba.csp.sentinel.metric.extension.MetricExtension; import com.alibaba.csp.sentinel.node.DefaultNode; import com.alibaba.csp.sentinel.slotchain.ProcessorSlotEntryCallback; import com.alibaba.csp.sentinel.slotchain.ResourceWrapper; import com.alibaba.csp.sentinel.slots.block.BlockException; /** * Metric extension entry callback. * * @author Carpenter Lee * @since 1.6.1 */ public class MetricEntryCallback implements ProcessorSlotEntryCallback<DefaultNode> { @Override public void onPass(Context context, ResourceWrapper resourceWrapper, DefaultNode param, int count, Object... args) throws Exception { for (MetricExtension m : MetricExtensionProvider.getMetricExtensions()) { m.increaseThreadNum(resourceWrapper.getName(), args); m.addPass(resourceWrapper.getName(), count, args); } } @Override public void onBlocked(BlockException ex, Context context, ResourceWrapper resourceWrapper, DefaultNode param, int count, Object... args) { for (MetricExtension m : MetricExtensionProvider.getMetricExtensions()) { m.addBlock(resourceWrapper.getName(), count, context.getOrigin(), ex, args); } } }