X-Git-Url: http://developer.intra2net.com/git/?p=libt2n;a=blobdiff_plain;f=src%2Fsocket_handler.cpp;fp=src%2Fsocket_handler.cpp;h=6f9df0770c00b10b8299e650c7d65453362cb3e3;hp=4fa27d08e3ed56099d71c2519ee2b6fc31746792;hb=644c4d262aab14ee4ec1cfade83a2e99568098d3;hpb=a11e19b7adab2d5b937573701959562f06087ac5 diff --git a/src/socket_handler.cpp b/src/socket_handler.cpp index 4fa27d0..6f9df07 100644 --- a/src/socket_handler.cpp +++ b/src/socket_handler.cpp @@ -34,6 +34,7 @@ #include #include +#include #include "socket_handler.hxx" #include "t2n_exception.hxx" @@ -106,9 +107,18 @@ void socket_handler::set_socket_options(int sock) void socket_handler::close() { + // graceful shutdown + shutdown(sock,SHUT_RDWR); ::close(sock); } +bool socket_handler::is_closed() +{ + int r=fcntl(sock,F_GETFL); + + return !(r & O_ACCMODE); +} + bool socket_handler::data_waiting(long long usec_timeout) { // just our socket @@ -191,7 +201,7 @@ bool socket_handler::fill_buffer(std::string& buffer) return false; } -void socket_handler::write(const std::string& data) +void socket_handler::socket_write(const std::string& data) { int offset = 0; while (offset < data.size())