/**
 * SiteLock
 * ロック中の探索ノードと，ロックしているURLを格納するクラス
 * ローカルの経路ナビゲータと経路決定ノードの間で相互転送されるので，シリアル化可能な
 * 形式を維持すること
 */
package org.logical_paradox.rss.router;
import java.io.Serializable;
import java.util.Calendar;

public class SiteLock implements Serializable {
	protected String fqdn = null;
	protected String robotId;
	protected boolean gc = false;

	// このロックに対する最終アクセス日時(ミリ秒)
	protected long lastUpdateTime = Calendar.getInstance().getTimeInMillis();


	public SiteLock( String dn, String id ) {
		fqdn = dn;
		robotId = id;
	}

	public String getSiteName() {
		if( fqdn != null ) {
			return new String( fqdn );
		} else {
			return null;
		}
	}

	public String toString() {
		return getSiteName();
	}

	public String getRobotId() {
		return robotId;
	}

	/**
	 * 使用完了フラグを立てる
	 * このフラグが立っていると，スレッドが自動的にリソースを回収する
	 */
	public void markGC() {
		gc = true;
	}

	/**
	 * このロックに対して最後に行なわれたアクセス時刻をミリ秒単位で返す
	 */
	public long getLastAccessTime() {
		return lastUpdateTime;
	}

	/**
	 * このロックが壊れているかどうかを返す
	 * true: 壊れている false: まだ大丈夫
	 */
	public boolean isBroken() {
		return gc;
	}

	/**
	 * このロックのアクセス日時を更新する
	 */
	public void touch() {
		lastUpdateTime = Calendar.getInstance().getTimeInMillis();
	}
}

// end of SiteLock.java
