| 141 | } |
| 142 | |
| 143 | bool SocketManager::startWrite(NET_SOCKET sockfd,Socket** ppSocket) const { |
| 144 | #if defined(_WIN32) |
| 145 | return WSAAsyncSelect(sockfd, _eventSystem, 104, FD_CONNECT | FD_ACCEPT | FD_CLOSE | FD_READ | FD_WRITE) == 0; |
| 146 | #elif defined(_OS_BSD) |
| 147 | struct kevent event; |
| 148 | memset(&event, 0, sizeof(event)); |
| 149 | EV_SET(&event, sockfd, EVFILT_WRITE, EV_ADD, 0, 0, ppSocket); |
| 150 | return kevent(_eventSystem, &event, 1, NULL, 0, NULL) >= 0; |
| 151 | #else |
| 152 | epoll_event event; |
| 153 | memset(&event, 0, sizeof(event)); |
| 154 | event.events = EPOLLIN | EPOLLOUT | EPOLLRDHUP; |
| 155 | event.data.fd = sockfd; |
| 156 | event.data.ptr = ppSocket; |
| 157 | return epoll_ctl(_eventSystem, EPOLL_CTL_MOD, sockfd, &event)>=0; |
| 158 | #endif |
| 159 | } |
| 160 | |
| 161 | bool SocketManager::stopWrite(NET_SOCKET sockfd,Socket** ppSocket) const { |
| 162 | #if defined(_WIN32) |