| 142 | } |
| 143 | |
| 144 | void Socket::setTimeout(unsigned timeout) { |
| 145 | ReadLocker locker(m_mutex); |
| 146 | checkOpen("Socket::setTimeout"); |
| 147 | |
| 148 | void* val; |
| 149 | socklen_t size; |
| 150 | #ifdef STAR_SYSTEM_FAMILY_WINDOWS |
| 151 | val = &timeout; |
| 152 | size = sizeof(timeout); |
| 153 | #else |
| 154 | struct timeval tv; |
| 155 | tv.tv_sec = timeout - timeout % 1000; |
| 156 | tv.tv_usec = (timeout % 1000) * 1000; |
| 157 | val = &tv; |
| 158 | size = sizeof(tv); |
| 159 | #endif |
| 160 | |
| 161 | m_impl->setSockOpt(SOL_SOCKET, SO_RCVTIMEO, val, size); |
| 162 | m_impl->setSockOpt(SOL_SOCKET, SO_SNDTIMEO, val, size); |
| 163 | } |
| 164 | |
| 165 | void Socket::setNonBlocking(bool nonBlocking) { |
| 166 | ReadLocker locker(m_mutex); |