/**
 * $Id: CAsyncClientSocketImpl.java,v 1.2 2005/05/15 03:53:36 rampil Exp $
 * LOGICAL-PARADOX.ORG
 * Copyright (C)2004 satoshi akabane(akabane@logical-paradox.org)
 *
 */
package org.logical_paradox.testsite.async;

import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.CharBuffer;
import java.nio.channels.SocketChannel;
import java.nio.charset.Charset;
import java.nio.charset.CharsetDecoder;

import org.logical_paradox.common.net.async.AsyncEvent;
import org.logical_paradox.common.net.async.CAsyncClientSocket;


/**
 * 非同期クライアントソケットの実装
 * @author satoshi akabane@logical-paradox.org
 * @version $Revision: 1.2 $
 */
public class CAsyncClientSocketImpl extends CAsyncClientSocket {

	/**
	 * コンストラクタ
	 * @param server リモートホスト
	 * @param p ポート番号
	 * @throws IOException 接続に失敗した
	 */
	public CAsyncClientSocketImpl(String server, int p) throws IOException {
		super(server, p);
	}

	/**
	 * コンストラクタ
	 * @param ch ソケットチャンネル
	 * @throws IOException 接続に失敗した
	 */
	public CAsyncClientSocketImpl(SocketChannel ch) throws IOException {
		super(ch);
	}
	public void onConnect(AsyncEvent e) {
		System.out.println("サーバーに接続しました");
	}

	/* (非 Javadoc)
	 * @see org.logical_paradox.common.net.async.AsyncEventListener#onReceive(org.logical_paradox.common.net.async.AsyncEvent)
	 */
	public void onReceive(AsyncEvent e) {
		ByteBuffer rb = ByteBuffer.allocate( 4096 );
		try {
			((SocketChannel)e.getChannel()).read( rb );
			rb.flip();
			Charset charset = Charset.forName( "MS932" );
			CharsetDecoder csdecoder = charset.newDecoder();
			CharBuffer cb = csdecoder.decode( rb );

			System.out.println("受信内容:[" + cb.toString() + "]");
		} catch( IOException ae ) {
		}
	}

}
