1 #pragma once 2 3 #include <cstring> 4 #include <string> 5 6 namespace fd_util { 7 8 // Slow as hell and should only be used for prototyping. 9 size_t ReadLine(int fd, char *buffer, size_t buf_size); 10 11 // Decently fast. 12 size_t WriteLine(int fd, const char *buffer, size_t buf_size); 13 size_t WriteLine(int fd, const char *buffer); 14 size_t Write(int fd, const std::string &str); 15 16 // Returns true if the fd became ready, false if it didn't or 17 // if there was another error. 18 bool WaitUntilReady(int fd, double timeout, bool for_write = false); 19 20 void SetNonBlocking(int fd, bool non_blocking); 21 22 std::string GetLocalIP(int sock); 23 24 } // fd_util 25