| 409 | } |
| 410 | |
| 411 | static ssize_t handleSend(libssh2_socket_t, const void* buffer, size_t length, int, void** implPtr) |
| 412 | { |
| 413 | auto& impl = *static_cast<Impl*>(*implPtr); |
| 414 | std::size_t sent{}; |
| 415 | const auto result = impl.socket.send(buffer, length, sent); |
| 416 | |
| 417 | // Map SFML-specific return values back to POSIX return values |
| 418 | if (result == Socket::Status::Done) |
| 419 | return static_cast<ssize_t>(sent); |
| 420 | |
| 421 | if (result == Socket::Status::Partial) |
| 422 | { |
| 423 | if (sent > 0) |
| 424 | return static_cast<ssize_t>(sent); |
| 425 | return -EAGAIN; |
| 426 | } |
| 427 | |
| 428 | if (result == Socket::Status::NotReady) |
| 429 | return -EAGAIN; |
| 430 | |
| 431 | if (result == Socket::Status::Disconnected) |
| 432 | return 0; |
| 433 | |
| 434 | // Socket::Status::Error |
| 435 | return -1; |
| 436 | } |
| 437 | |
| 438 | static ssize_t handleReceive(libssh2_socket_t, void* buffer, size_t length, int, void** implPtr) |
| 439 | { |