{
}
+/**
+ * Destructor. Closes open socket
+ */
+socket_handler::~socket_handler()
+{
+ if (sock != -1)
+ {
+ shutdown(sock,SHUT_RDWR);
+ ::close(sock);
+
+ sock = -1;
+ }
+}
+
+/// close the underlying socket connection. Don't call directly, use the version provided
+/// by the connection class you are using.
+void socket_handler::close()
+{
+ LOGSTREAM(debug,"close connection");
+ // graceful shutdown
+ shutdown(sock,SHUT_RDWR);
+ ::close(sock);
+
+ sock = -1;
+}
/// set options like fast reuse and keepalive every socket should have
void socket_handler::set_socket_options(int sock)
EXCEPTIONSTREAM(error,t2n_communication_error,"fcntl error on socket: " << strerror(errno));
}
-/// close the underlying socket connection. Don't call directly, use the version provided
-/// by the connection class you are using.
-void socket_handler::close()
-{
- LOGSTREAM(debug,"close connection");
- // graceful shutdown
- shutdown(sock,SHUT_RDWR);
- ::close(sock);
-}
-
/// is the underlying socket connection still open?
bool socket_handler::is_closed()
{
/// connection because it encapsulates the data.
void socket_handler::socket_write(const std::string& data)
{
- int offset = 0;
+ unsigned int offset = 0;
while (offset < data.size())
{
unsigned int write_size=write_block_size;