Exemple #1
0
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);
}
Exemple #2
0
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);
}
Exemple #3
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);
}