存档

文章标签 ‘事件处理’

事件处理模式之Reactor(二)

2011年4月5日 2 条评论

本文是上一篇《事件处理模式之Reactor(一)》的下一篇,上一篇主要介绍了reactor模式的基本理论,这一篇主要通过实例,来介绍Reactor模式的具体使用。在开始本文之前,有必要再说明一下,reactor的源码的地址:reactor源码, 感兴趣的读者朋友可以自己用svn客户端check out到本地。
如左图所示为reactor项目的基本结构,整体项目分为三个部分:

  • 一是libreactor项目,用来生成reactor相关的lib;
  • 二是server项目,是用reactor实现的一个时间服务器程序;
  • 三是client项目,是用reactor实现的一个客户端程序。
  • 服务端和客户端之间通过telnet协议进行交互,目前仅支持time和exit两个命令,客户向服务端发送time命令,服务端返回当前时间;客户端向服务端发送exit命令,服务端断开客户端连接。如果要实现其它命令,可以直接通过扩展相关处理逻辑来实现。这里我们关注的重点是reactor模式,因此不在支持的命令方面做过多的扩展,感兴趣的朋友可以自己进行扩展。 阅读全文…

    事件处理模式之Reactor(一)

    2011年3月28日 3 条评论

    写过大中型网络服务器的朋友相信对事件处理模型(有时也叫事件触发模型)不陌生。今天要讲的Reactor就是在事件处理模型中用的比较多的一种设计模式。请大家先看下面的图,有个初步的印象:

    在上图中,可以看到主要有以下四种角色:
    1. Reactor:
    Reactor是Reactor模式中最为关键的角色,它是该模式最终向用户提供接口的类。用户可以向Reactor中注册EventHandler(3),然后Reactor在“反应(react)”的时候,发现用户注册的fd上有事件发生,就会回调用户的事件处理函数。下面是一个简单的设计: 阅读全文…