Select::Select(): _fdSets(new std::map<eSelect, fd_set>), _maxFd(0), _timeout(NULL) { _fdSets->insert(std::pair<eSelect, fd_set>(READ, fd_set())); // FD_ZERO(&_fdRead); // FD_ZERO(&_fdWrite); }
int close(int fd) { int mode = fd_mode(fd); rp_t rp = fd_rp(fd); if (!rp) { // is not valid file descriptor return -1; } if (rp_clrstat(rp, mode)) { // could not close connection return -1; } // clear file descriptor entry return fd_set(fd, rp, 0); }
int close(int fd) { rp_t rp = fd_rp(fd); if (!rp) { // is not valid file descriptor return -1; } if (fd_mode(fd) & ACCS_EVENT) { // stop listening to events free(rcall(rp, fd_getkey(fd, AC_EVENT), "un-listen")); } if (fd_mode(fd) & ACCS_WRITE) { // finish writing free(rcall(rp, fd_getkey(fd, AC_WRITE), "finish")); } // clear file descriptor entry return fd_set(fd, rp, 0); }