想要看懂mina的源代码,需要做一些知识储备.
我大体列一下:
java.nio.*(java非阻塞io)
java.util.concurrent.*(原子类,阻塞集合,java并发)
java.thread(线程模型)
threadPool(线程池)
java.lang.reflect.InvocationHandler(动态代理)
invoke(反射)
jmx(平台管理)
需要用到几个设计模式:
观察者模式:observer
责任链模式:chain
异步模式(推) :Reactor
异步通知模式:Future(基于事件和回调模式)
状态机模式:state
工厂,单例,代理,工厂,....
下面展开讲述Filter实现里面的状态机:
DecodingState
DecodingStateMachine
DecodingStateProtocolDecoder
ProtocolCodecFactory
ProtocolCodecFilter
IoFilterChain(串联ioFilter)-->head-tail-addLast(中间加自定义的过滤器-)
贯穿始终的几个事件.
void exceptionCaught(IoSession session, Throwable cause)
当接口中其他方法抛出异常未被捕获时触发此方法
void messageReceived(IoSession session, Object message)
当接收到客户端的请求信息后触发此方法.
void messageSent(IoSession session, Object message)
当信息已经传送给客户端后触发此方法.
void sessionClosed(IoSession session)
当连接被关闭时触发,例如客户端程序意外退出等等.
void sessionCreated(IoSession session)
当一个新客户端连接后触发此方法.
void sessionIdle(IoSession session, IdleStatus status)
当连接空闲时触发此方法.
void sessionOpened(IoSession session)
当连接后打开时触发此方法,一般此方法与 sessionCreated 会被同时触发
2011-03-11-22:30-回家的火车上-第一次编译.
有两个东西没有记录:
我大体列一下:
java.nio.*(java非阻塞io)
java.util.concurrent.*(原子类,阻塞集合,java并发)
java.thread(线程模型)
threadPool(线程池)
java.lang.reflect.InvocationHandler(动态代理)
invoke(反射)
jmx(平台管理)
需要用到几个设计模式:
观察者模式:observer
责任链模式:chain
异步模式(推) :Reactor
异步通知模式:Future(基于事件和回调模式)
状态机模式:state
工厂,单例,代理,工厂,....
下面展开讲述Filter实现里面的状态机:
DecodingState
DecodingStateMachine
DecodingStateProtocolDecoder
ProtocolCodecFactory
ProtocolCodecFilter
IoFilterChain(串联ioFilter)-->head-tail-addLast(中间加自定义的过滤器-)
贯穿始终的几个事件.
void exceptionCaught(IoSession session, Throwable cause)
当接口中其他方法抛出异常未被捕获时触发此方法
void messageReceived(IoSession session, Object message)
当接收到客户端的请求信息后触发此方法.
void messageSent(IoSession session, Object message)
当信息已经传送给客户端后触发此方法.
void sessionClosed(IoSession session)
当连接被关闭时触发,例如客户端程序意外退出等等.
void sessionCreated(IoSession session)
当一个新客户端连接后触发此方法.
void sessionIdle(IoSession session, IdleStatus status)
当连接空闲时触发此方法.
void sessionOpened(IoSession session)
当连接后打开时触发此方法,一般此方法与 sessionCreated 会被同时触发
2011-03-11-22:30-回家的火车上-第一次编译.
有两个东西没有记录: