/*
 * LOGICAL-PARADOX.ORG
 * Copyright (C)2005 satoshi akabane(akabane@logical-paradox.org)
 * $Id: Metric.java,v 1.1 2005/06/29 15:57:36 rampil Exp $
 */
package org.logical_paradox.rss.dsr.routing.metrics;

import org.logical_paradox.rss.dsr.routing.Node;

/**
 * 2つのノード間のメトリック情報を格納するオブジェクト
 * @author satoshi akabane@logical-paradox.org
 * @version $Revision: 1.1 $
 */
public class Metric implements Comparable {
	/** メトリック値 */
	private final double metric_;
	/** 計測相手 */
	private final Node buddy_;

	/**
	 * コンストラクタ
	 * @param metric メトリック値
	 * @param buddy 計測した相手
	 */
	public Metric(double metric, Node buddy) {
		metric_ = metric;
		buddy_ = buddy;
	}
	/**
	 * メトリック値を返す
	 * @return メトリック値
	 */
	public double getMetric() {
		return metric_;
	}
	/**
	 * 計測相手を返す
	 * @return 計測相手
	 */
	public Node getBuddy() {
		return buddy_;
	}
	/**
	 * メトリック同士を比較する
	 * 比較対象はメトリック値のみ
	 * @param o 比較相手
	 * @return 0: 同値 1:大きい(oと比べて) -1:小さい
	 */
	public int compareTo(Object o) {
		Metric met = (Metric)o;
		Double d1 = new Double(metric_);
		Double d2 = new Double(met.getMetric());

		return d1.compareTo(d2);
	}
}
