package jp.ehobby.info;

import java.lang.management.ManagementFactory;
import java.lang.management.RuntimeMXBean;
import java.net.InetAddress;
import java.net.UnknownHostException;


/**
 * システム情報を表します.
 *
 * @author kei-n
 */
public final class SystemInfo {

	/**
	 * Java VM を実行しているプロセスIDを返します.
	 * PIDの取得に失敗した場合、-1 を返します.
	 *
	 * @return PID
	 */
	public static int getPid() {

		// jvmName は通常 [PID]@[ホスト名] といった形になるので、PID部分を取得する
		RuntimeMXBean bean    = ManagementFactory.getRuntimeMXBean();
		String        jvmName = bean.getName();
		String        pidStr  = jvmName.split("@")[0];		//$NON-NLS-1$

		int pid;
		try {
			pid = Integer.parseInt(pidStr);
		} catch (@SuppressWarnings("unused") NumberFormatException e) {
			pid = -1;
		}

		return pid;
	}


	/**
	 * ローカルホストの名前を返します.
	 * ローカルホストの名前が取得できない場合、"localhost" を返します.
	 *
	 * @return ローカルホストの名前
	 */
	public static String getLocalHostName() {
		try {
			InetAddress localAddr = InetAddress.getLocalHost();
			return localAddr.getHostName();

		} catch (@SuppressWarnings("unused") UnknownHostException e) {
			return "localhost";									//$NON-NLS-1$
		}
	}
}
