package org.jboss.netty.channel;
import org.jboss.netty.util.ExternalResourceReleasable;
/**
* ���Ǻʹ�������Ҫ�ӿڣ�����һ���;���ͨ��ʵ�壨���������֣�������Channel��
* ����˵NioServerSocketChannelFactory������ͨ������л���NIO��server socket���ײ��ͨ��ʵ�塣
* һ��һ���µ�Channel�����ˣ���ôͨ������ָ�����Ǹ�ChannelPipeline �ͻῪʼ����ChannelEvents��
*/
public interface ChannelFactory extends ExternalResourceReleasable {
/**
*��������һ���µ�Channel��������һ��pipeline
*���ʧ�ܻ��׳�ChannelException
*/
Channel newChannel(ChannelPipeline pipeline);
/**
* �ر�ChannelFactory�����ڲ���������Դ
*/
void shutdown();
/**
* �ͷ����factory�����������ⲿ��Դ�������������factory�Լ������ģ�
* ����˵��ChannelFactory���췽��ʱָ����Executor������Ҫ���������������ͷŹ���
* ���������һ����Channel��ȴ���ⲿ��Դ�ͷ��ˣ��ͻᷢ������Ľ��
* ͬ����Ҫ�ȵ���shutdown()
*/
void releaseExternalResources();
}