| 159 | } |
| 160 | |
| 161 | bool SocketManager::stopWrite(NET_SOCKET sockfd,Socket** ppSocket) const { |
| 162 | #if defined(_WIN32) |
| 163 | return WSAAsyncSelect(sockfd, _eventSystem, 104, FD_CONNECT | FD_ACCEPT | FD_CLOSE | FD_READ) == 0; |
| 164 | #elif defined(_OS_BSD) |
| 165 | struct kevent event; |
| 166 | memset(&event, 0, sizeof(event)); |
| 167 | EV_SET(&event, sockfd, EVFILT_READ, EV_ADD, 0, 0, ppSocket); |
| 168 | return kevent(_eventSystem, &event, 1, NULL, 0, NULL) >= 0; |
| 169 | #else |
| 170 | epoll_event event; |
| 171 | memset(&event, 0, sizeof(event)); |
| 172 | event.events = EPOLLIN | EPOLLRDHUP; |
| 173 | event.data.fd = sockfd; |
| 174 | event.data.ptr = ppSocket; |
| 175 | return epoll_ctl(_eventSystem, EPOLL_CTL_MOD,sockfd, &event) >= 0; |
| 176 | #endif |
| 177 | } |
| 178 | |
| 179 | |
| 180 | void SocketManager::remove(NET_SOCKET sockfd) const { |