/**
 * $Id: CAsyncServerSocketImpl.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.CAsyncServerSocket;

/**
 * 非同期サーバーソケットの実装
 * @author satoshi akabane@logical-paradox.org
 * @version $Revision: 1.2 $
 */
public class CAsyncServerSocketImpl extends CAsyncServerSocket {

	/**
	 * コンストラクタ
	 * @param port listeningするポート番号
	 * @throws IOException 生成に失敗した場合に発生する例外
	 */
	public CAsyncServerSocketImpl(int port) throws IOException {
		super(port);
	}

	/* (非 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 ) {
		}
	}
	public void onAccept(AsyncEvent e) {
		System.out.println("クライアントの接続を受け付けました");
	}

}
