int SelectPoll::registerFd(SOCKET_FD fd, uint32_t events, IOCallback& cb) { KUMA_INFOTRACE("SelectPoll::registerFd, fd="<<fd); resizePollItems(fd); if (INVALID_FD == poll_items_[fd].fd || -1 == poll_items_[fd].idx) { PollFD pfd; pfd.fd = fd; pfd.events = events; poll_fds_.push_back(pfd); poll_items_[fd].idx = int(poll_fds_.size() - 1); } poll_items_[fd].fd = fd; poll_items_[fd].cb = cb; updateFdSet(fd, events); return KUMA_ERROR_NOERR; }
KMError VPoll::registerFd(SOCKET_FD fd, KMEvent events, IOCallback cb) { if (fd < 0) { return KMError::INVALID_PARAM; } resizePollItems(fd); int idx = -1; if (INVALID_FD == poll_items_[fd].fd || -1 == poll_items_[fd].idx) { // new pollfd pfd; pfd.fd = fd; pfd.events = get_events(events); poll_fds_.push_back(pfd); idx = int(poll_fds_.size() - 1); poll_items_[fd].idx = idx; } poll_items_[fd].fd = fd; poll_items_[fd].events = events; poll_items_[fd].cb = std::move(cb); KUMA_INFOTRACE("VPoll::registerFd, fd="<<fd<<", events="<<events<<", index="<<idx); return KMError::NOERR; }