nosqldev / async_coro

Asynchronous IO + coroutine, a high performance solution for networking server. You can write code as synchronous model, rather than control state machine by yourself.
12 stars 3 forks source link

some thing looks like a feature or a bug? #1

Open wolfkdy opened 10 years ago

wolfkdy commented 10 years ago

在acoro中 大多数对于libev的回调第三个参数 -----event 都是对其进行assert是否等于的。 比如ev_sock_connect 函数的处理

libev 的回调的第三个参数并不完全是用户设置的。其中可能有EV_ERROR 的标志位, 这样会直接导致程序的crash

判断event 中是否有ERROR标志位并返回-1 更好一些?

nosqldev commented 10 years ago
  1. 确实没考虑这种情况。
  2. 按照说明: EV_ERROR An unspecified error has occurred, the watcher has been stopped. ...................... 看起来直接 assert 不算一个大错误,unspecified 指的错误都是意外发生的,这种情况下,如果是非生成环境程序挂掉确实是我想见的情况,这样可以立刻跟踪问题。
  3. 对于要求高的线上问题,应该加一个分支(也就是说,assert 我觉得还是可以保留的,但是线上系统在编译的时候应该把 assert 关闭),特别对不在预期内的 event 进行处理,这里如果在线上,能处理的办法就是 close(fd),然后记录日志。