godsonhand / spserver

Automatically exported from code.google.com/p/spserver
Other
0 stars 0 forks source link

请教新旧版本speventcb.cpp中让人费解的问题 #24

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
旧版本中speventcb.cpp的onAccept函数中,
event_set( session->getReadEvent(), clientFD, EV_READ, onRead, session );
调用后,紧接着又调用了AddEvent(),而AddEvent()中又调用了event_se
t,这里是特意这样调
用的吗,还是我对libevent的函数使用没有理解对?

而在新版本中speventcb.cpp的onAccept函数中,
event_set( session->getReadEvent(), clientFD, EV_READ, onRead, session );

这里注册了回调函数,但没看到event_add的调用,同旧版本完��
�不同了,去掉了AddEvent的调
用,是有特别的用意吗

望不吝赐教,谢谢

Original issue reported on code.google.com by decker...@gmail.com on 7 Sep 2009 at 1:45

GoogleCodeExporter commented 9 years ago
抱歉,一直没留意到这个 issue 。

这个修改是为了支持 ssl 而做的。ssl 
连接在初始化的时候,有可能需要多次网络交互。因此把这
个初始化放到了 threadpool 中执行。在 ssl 
初始化完成之后,再进行 event_add 的操作。
目前的流程是 onAccept 得到 fd ,然后放到 inQueue 中,threadpool 
从 inQueue 中取得fd 进
行 ssl 的初始化,然后放到 outQueue 。onResponse 从outQueue 
中取得 fd ,再做 event_add 
的操作。

Original comment by stephen....@gmail.com on 13 Dec 2009 at 2:48