| 227 | } |
| 228 | |
| 229 | int receiveData(void* elem, unsigned int size) |
| 230 | { |
| 231 | #ifdef LIBTAS_LIBRARY |
| 232 | LOG(LL_DEBUG, LCF_SOCKET, "Receive socket data of size %u", size); |
| 233 | #endif |
| 234 | |
| 235 | ssize_t ret = 0; |
| 236 | do { |
| 237 | ret = recv(socket_fd, elem, size, MSG_WAITALL); |
| 238 | } while ((ret == -1) && (errno == EINTR)); |
| 239 | |
| 240 | if (ret == -1) { |
| 241 | #ifdef LIBTAS_LIBRARY |
| 242 | LOG(LL_ERROR, LCF_SOCKET, "recv() returns -1 with error %s", strerror(errno)); |
| 243 | #else |
| 244 | std::cerr << "recv() returns -1 with error " << strerror(errno) << std::endl; |
| 245 | #endif |
| 246 | } |
| 247 | else if (ret == 0 && size > 0) { // socket has been closed |
| 248 | #ifdef LIBTAS_LIBRARY |
| 249 | LOG(LL_WARN, LCF_SOCKET, "recv() returns 0 -> socket closed"); |
| 250 | #else |
| 251 | std::cerr << "recv() returns 0 -> socket closed" << std::endl; |
| 252 | #endif |
| 253 | } |
| 254 | else if (ret != static_cast<ssize_t>(size)) { |
| 255 | #ifdef LIBTAS_LIBRARY |
| 256 | LOG(LL_ERROR, LCF_SOCKET, "recv() %u bytes instead of %u", ret, size); |
| 257 | #else |
| 258 | std::cerr << "recv() " << ret << " bytes instead of " << size << std::endl; |
| 259 | #endif |
| 260 | } |
| 261 | return ret; |
| 262 | } |
| 263 | |
| 264 | int receiveMessage() |
| 265 | { |
no outgoing calls
no test coverage detected