com.github.dennisit.vplus.data.metric.JMetricPipelineProxy Maven / Gradle / Ivy
/*--------------------------------------------------------------------------
* Copyright (c) 2010-2020, Elon.su All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the elon developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: Elon.su, you can also mail [email protected]
*--------------------------------------------------------------------------
*/
package com.github.dennisit.vplus.data.metric;
import com.google.common.collect.Lists;
import org.apache.commons.collections4.CollectionUtils;
import java.util.List;
import java.util.Map;
import java.util.Optional;
/**
* 链式传递
* @author Elon.su
*/
public class JMetricPipelineProxy implements JMetricPipeline {
private List pool = Lists.newArrayList();
public void add(JMetricPipeline pipeline) {
if(null == pipeline){
return;
}
pool.add(pipeline);
}
public void add(JMetricPipeline... pipelines){
add(Lists.newArrayList(pipelines));
}
public void add(List pipelines){
if(CollectionUtils.isEmpty(pipelines)){
return;
}
pool.addAll(pipelines);
}
@Override
public void initialized() {
}
/**
* 链式传递
* @param collector 采集管道
* @param key 标识Key
* @param value 标识值
* @param mills 耗时
*/
@Override
public void pipeline(JMetricCollector collector, String key, Object value, long mills) {
Optional.ofNullable(pool).orElse(Lists.newArrayList()).forEach(
x -> {
x.pipeline(collector, key, value, mills);
}
);
}
@Override
public void pipeline(JMetricCollector collector, Map metricMapping, long mills) {
Optional.ofNullable(pool).orElse(Lists.newArrayList()).forEach(
x -> {
x.pipeline(collector, metricMapping, mills);
}
);
}
@Override
public void destroyed() {
}
}