selectable.cc

来自「Unix下的MUD客户端程序」· CC 代码 · 共 47 行

CC
47
字号
#include "mcl.h"#include <sys/time.h>List<Selectable*> Selectable::ioList;// Do a select on all registered Selectable objectsvoid Selectable::select(int sec, int usec){    fd_set in_set, out_set;    Selectable *i;    int max_fd = 0;    struct timeval tv;    tv.tv_usec = usec;    tv.tv_sec = sec;        FD_ZERO(&in_set);    FD_ZERO(&out_set);        for (i = ioList.rewind(); i;  i = ioList.next())        max_fd = max(max_fd, i->init_fdset(&in_set, &out_set));            while (::select(max_fd+1, &in_set, &out_set, NULL, &tv) < 0)        if (errno != EAGAIN && errno != EINTR)        {            perror ("select");            exit (1);        }    // @@ Async connections are ready when ready to be written to, not read from    for (i = ioList.rewind(); i;  i = ioList.next())        i->check_fdset(&in_set, &out_set);}Selectable::Selectable() {    ioList.append(this);}Selectable::~Selectable() {    ioList.remove(this);}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?