public interface Reactor {
void register(ReactorHandler handler);
void deregister(ReactorHandler handler);
void interest(ReactorHandler handler, int ops);
看起来Reactor 是蛮简单的,但是却是困惑我最久的地方。
public void run() {
try {
while (!close) {
beforeSelect();
if (close) // after beforeSelect, close may be true
break;
try {
selector.select(SELECT_TIMEOUT);
} catch (IOException e) {
log.error(e, e);
break;
}
afterSelect();
}
} finally {
DefaultReactor.this.stop();
}
}
Reactor启动之后,会不停的通过selector去查看各个频道的状态,然后通过ReactorHandler 执行对应状态的操作。
private void processSelectedKeys() {
for (Iterator iter = selector.selectedKeys().iterator(); iter.hasNext();) {
SelectionKey key = (SelectionKey) iter.next();
iter.remove();
key.interestOps(key.interestOps() & ~key.readyOps());
Attachment attachment = (Attachment) key.attachment();
ReactorHandler handler = attachment.handler;
if (key.isWritable()) // do not check session timeout when writing
attachment.writing = true;
if (key.isAcceptable())
handler.onAcceptable();
if (key.isConnectable())
handler.onConnectable();
if (key.isValid() && key.isReadable())
handler.onReadable();
if (key.isValid() && key.isWritable())
handler.onWritable();
}
}
那session的sockerchannel怎么和selector产生联系呢。通过register和deregister方法。那状态的改变呢,是通过interest方法。
ReactorHandler是怎么执行的呢。基本上是通过SessionFilterChain执行对应的方法。SessionFilter可以直接通过session添加:session.addSessionFilter(XXX);
分享到:
相关推荐
java基于NIO实现Reactor模型源码java基于NIO实现Reactor模型源码java基于NIO实现Reactor模型源码java基于NIO实现Reactor模型源码java基于NIO实现Reactor模型源码java基于NIO实现Reactor模型源码java基于NIO实现...
在阅读和理解Reacttor模式的源码时,重点应该关注以下几点: 1. **事件注册与注销机制**:如何高效地添加和删除事件处理器,以及如何保持这些处理器的关联信息。 2. **事件分发策略**:Reacttor如何决定哪个事件...
基于Reactor高并发服务器 c++源码+详细项目说明+sln解决方案.zip基于Reactor高并发服务器 c++源码+详细项目说明+sln解决方案.zip基于Reactor高并发服务器 c++源码+详细项目说明+sln解决方案.zip基于Reactor高并发...
赠送jar包:reactor-netty-core-1.0.15.jar; 赠送原API文档:reactor-netty-core-1.0.15-javadoc.jar; 赠送源代码:reactor-netty-core-1.0.15-sources.jar; 赠送Maven依赖信息文件:reactor-netty-core-1.0.15....
基于主从reactor模型的高并发服务器项目C++源码.zip基于主从reactor模型的高并发服务器项目C++源码.zip基于主从reactor模型的高并发服务器项目C++源码.zip基于主从reactor模型的高并发服务器项目C++源码.zip基于主从...
赠送jar包:reactor-netty-http-1.0.11.jar; 赠送原API文档:reactor-netty-http-1.0.11-javadoc.jar; 赠送源代码:reactor-netty-http-1.0.11-sources.jar; 赠送Maven依赖信息文件:reactor-netty-...
赠送jar包:reactor-extra-3.4.6.jar; 赠送原API文档:reactor-extra-3.4.6-javadoc.jar; 赠送源代码:reactor-extra-3.4.6-sources.jar; 赠送Maven依赖信息文件:reactor-extra-3.4.6.pom; 包含翻译后的API文档...
.Net Reactor v5.9.8.0 是一款强大的源码保护工具,专门用于C#项目的源码加密和混淆,以防止未经授权的访问、反编译或篡改。这款工具的核心功能包括对IL代码(Intermediate Language)的保护,字符串加密,代码混淆...
一款基于go语言实现的reactor模型的微服务式分布式游戏架构,继承了很多c++游戏架构的思想,结合go语言的轻便与开发效率,与主流中间件的完美搭配,适用于中小型游戏,mmo等游戏.zip 源码是经过本地编译可运行的,...
C和C++实现和封装不同的网络 IO 模型源码(如 epoll、reactor、io_uring 和 proactor).zip 【说明】 【1】项目代码完整且功能都验证ok,确保稳定可靠运行后才上传。欢迎下载使用!在使用过程中,如有问题或建议,请...
《深入解析Reactor-Core源码》 Reactor-Core是Spring框架中的一个关键组件,它是响应式编程库Reactor的核心部分,广泛应用于Java的异步...通过阅读源码,我们可以学习到如何设计和实现一个高效、灵活的反应式流系统。
基于muduo网络库Reactor模型的集群聊天源码+项目说明.zip基于muduo网络库Reactor模型的集群聊天源码+项目说明.zip基于muduo网络库Reactor模型的集群聊天源码+项目说明.zip基于muduo网络库Reactor模型的集群聊天源码+...
.NET Reactor是一款功能强大的代码保护以及许可授权管理系统软件,主要用于开发人员保护其.NET软件程序,.NET Reactor支持所有支持.NET编译的程序开发语言。 .NET Reactor 4.9是目前最新版本,由大神yoza破解,亲测...
linux C++ 基于Reactor事件机制的网络编程框架源码.zip。linux网络编程框架(C++)基于Reactor事件机制,支持线程池,异步非阻塞,高并发,高性能。linux C++ 基于Reactor事件机制的网络编程框架源码.zip。linux网络...
本文将深入探讨Java NIO中的Selector机制,并通过源码分析来理解其实现原理。 Selector机制是Java NIO中的核心组件,它允许单线程同时监控多个通道(Channels)的状态变化,例如连接就绪、数据可读或可写等。这种...
【资源说明】 1、该资源内项目代码都是经过测试运行成功,功能正常的情况下才上传的,请放心下载使用。 2、适用人群:主要针对计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、...
在深入探讨Netty的Reactor线程模型源码之前,我们需要先理解Reactor模式的基本概念。 Reactor模式是一种设计模式,常用于处理并发I/O事件。在多路复用I/O(如epoll、kqueue)中,Reactor模式是关键组成部分,它负责...
基于Reactor的高并发服务器c++和c源码+超详细项目说明+sln解决方案.zip基于Reactor的高并发服务器c++和c源码+超详细项目说明+sln解决方案.zip基于Reactor的高并发服务器c++和c源码+超详细项目说明+sln解决方案.zip...
文档以一系列问题的形式引导用户如何开始阅读,例如:"什么是Reactor?","需要哪些前提条件?",以及"如何获取Reactor"等。 接下来是关于响应式编程的介绍,文档解释了阻塞操作对资源的浪费,异步编程如何能解决...