// Path: src/main/java/com/zavakid/mushroom/MetricGauge.java
// public abstract class MetricGauge<T extends Number> extends Metric {
// 
//     /**
//      * Construct a gauge metric
//      * 
//      * @param name of the metric
//      * @param description of the metric
//      */
//     public MetricGauge(String name, String description){
//         super(name, description);
//     }
// 
//     public abstract T value();
// 
// }
// 
// Path: src/main/java/com/zavakid/mushroom/MetricsVisitor.java
// public interface MetricsVisitor {
// 
//     /**
//      * Callback for int value gauges
//      * 
//      * @param metric the metric object
//      * @param value of the metric
//      */
//     public void gauge(MetricGauge<Integer> metric, int value);
// 
//     /**
//      * Callback for long value gauges
//      * 
//      * @param metric the metric object
//      * @param value of the metric
//      */
//     public void gauge(MetricGauge<Long> metric, long value);
// 
//     /**
//      * Callback for float value gauges
//      * 
//      * @param metric the metric object
//      * @param value of the metric
//      */
//     public void gauge(MetricGauge<Float> metric, float value);
// 
//     /**
//      * Callback for double value gauges
//      * 
//      * @param metric the metric object
//      * @param value of the metric
//      */
//     public void gauge(MetricGauge<Double> metric, double value);
// 
//     /**
//      * Callback for integer value counters
//      * 
//      * @param metric the metric object
//      * @param value of the metric
//      */
//     public void counter(MetricCounter<Integer> metric, int value);
// 
//     /**
//      * Callback for long value counters
//      * 
//      * @param metric the metric object
//      * @param value of the metric
//      */
//     public void counter(MetricCounter<Long> metric, long value);
// 
//     /**
//      * Callback for integer value delta
//      * 
//      * @param metric the metric object
//      * @param value of the metric
//      */
//     public void delta(MetricDelta<Integer> metric, int value);
// 
//     /**
//      * Callback for long value delta
//      * 
//      * @param metric the metric object
//      * @param value of the metric
//      */
//     public void delta(MetricDelta<Long> metric, long value);
// }


import com.zavakid.mushroom.MetricGauge;
import com.zavakid.mushroom.MetricsVisitor;
/**
   Copyright [2013] [Mushroom]

   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.
 */
/**
 Notice : this source is extracted from Hadoop metric2 package
 and some source code may changed by zavakid
 */
package com.zavakid.mushroom.impl;


/**
 * @author Hadoop metric2 package's authors
 * @since 0.1
 */
public class MetricGaugeLong extends MetricGauge<Long> {

    private final long value;

    MetricGaugeLong(String name, String description, long value){
        super(name, description);
        this.value = value;
    }

    public Long value() {
        return value;
    }

    public void visit(MetricsVisitor visitor) {
// Path: src/main/java/com/zavakid/mushroom/MetricGauge.java
// public abstract class MetricGauge<T extends Number> extends Metric {
// 
//     /**
//      * Construct a gauge metric
//      * 
//      * @param name of the metric
//      * @param description of the metric
//      */
//     public MetricGauge(String name, String description){
//         super(name, description);
//     }
// 
//     public abstract T value();
// 
// }
// 
// Path: src/main/java/com/zavakid/mushroom/MetricsVisitor.java
// public interface MetricsVisitor {
// 
//     /**
//      * Callback for int value gauges
//      * 
//      * @param metric the metric object
//      * @param value of the metric
//      */
//     public void gauge(MetricGauge<Integer> metric, int value);
// 
//     /**
//      * Callback for long value gauges
//      * 
//      * @param metric the metric object
//      * @param value of the metric
//      */
//     public void gauge(MetricGauge<Long> metric, long value);
// 
//     /**
//      * Callback for float value gauges
//      * 
//      * @param metric the metric object
//      * @param value of the metric
//      */
//     public void gauge(MetricGauge<Float> metric, float value);
// 
//     /**
//      * Callback for double value gauges
//      * 
//      * @param metric the metric object
//      * @param value of the metric
//      */
//     public void gauge(MetricGauge<Double> metric, double value);
// 
//     /**
//      * Callback for integer value counters
//      * 
//      * @param metric the metric object
//      * @param value of the metric
//      */
//     public void counter(MetricCounter<Integer> metric, int value);
// 
//     /**
//      * Callback for long value counters
//      * 
//      * @param metric the metric object
//      * @param value of the metric
//      */
//     public void counter(MetricCounter<Long> metric, long value);
// 
//     /**
//      * Callback for integer value delta
//      * 
//      * @param metric the metric object
//      * @param value of the metric
//      */
//     public void delta(MetricDelta<Integer> metric, int value);
// 
//     /**
//      * Callback for long value delta
//      * 
//      * @param metric the metric object
//      * @param value of the metric
//      */
//     public void delta(MetricDelta<Long> metric, long value);
// }


// Path: src/main/java/com/zavakid/mushroom/impl/MetricGaugeLong.java
import com.zavakid.mushroom.MetricGauge;
import com.zavakid.mushroom.MetricsVisitor;

/**
   Copyright [2013] [Mushroom]

   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.
 */
/**
 Notice : this source is extracted from Hadoop metric2 package
 and some source code may changed by zavakid
 */
package com.zavakid.mushroom.impl;


/**
 * @author Hadoop metric2 package's authors
 * @since 0.1
 */
public class MetricGaugeLong extends MetricGauge<Long> {

    private final long value;

    MetricGaugeLong(String name, String description, long value){
        super(name, description);
        this.value = value;
    }

    public Long value() {
        return value;
    }

    public void visit(MetricsVisitor visitor) {
        visitor.gauge(this, value);