/*
 * LOGICAL-PARADOX.ORG
 * Copyright (C)2005 satoshi akabane(akabane@logical-paradox.org)
 * $Id: DacConnectionTester.java,v 1.1 2005/09/07 13:38:06 rampil Exp $
 */
package org.logical_paradox.vsan.sample;

import org.logical_paradox.common.util.StringUtils;
import org.logical_paradox.vsan.dac.DacConnection;

/**
 * DacConnectionでDACに対する読み書きをするテストクラス
 * @author satoshi akabane@logical-paradox.org
 * @version $Revision: 1.1 $
 */
public class DacConnectionTester {
	/**
	 * メインメソッド．
	 * @param main メイン
	 * @throws Exception ハンドルされなかった例外
	 */
	public static final void main(String[] main) throws Exception {
		// 14文字のランダムなテキスト
		final String testdata = StringUtils.randomText(14, true);

		DacConnection con = DacConnection.open("localhost:9876");

		// 元のデータを取得する
		byte[] buf = new byte[32];
		con.read(1, 1, buf);

		// テストデータを書き込む
		log("テストデータを書き込んでいます..");
		con.write(1, testdata.getBytes());		
		log("OK.");

		// 書き込んだテストデータを読む
		log("書き込んだテストデータを検証しています..");
		byte[] b = new byte[testdata.length()];
		int c = con.read(1, 1, b);

		log("データ長  : " +  c + "bytes .... " + (testdata.length() == c));
		log("受信データ: " + new String(b).trim() + " .... " + (testdata.equals(new String(b))));

		// 元のデータを書き込む
		con.write(1, buf);

		log("テスト終了.");

		con.close();
	}
	/**
	 * ログ出力．
	 * @param msg 出力したいログ
	 */
	private static final void log(String msg) {
		System.out.println(msg);
	}
}
