///////////////////////////////////////////////////////////////////////////////
//
// Copyright (C) 2008-2012 Artyom Beilis (Tonkikh)
//
// See accompanying file COPYING.TXT file for licensing details.
//
///////////////////////////////////////////////////////////////////////////////
#define CPPCMS_SOURCE
#include
#ifndef CPPCMS_WIN32
#include
#include
#include // struct timeval
#include
#else
#include
#include
#endif
#include "send_timeout.h"
namespace cppcms {
namespace impl {
#ifndef CPPCMS_WIN32
void set_send_timeout(booster::aio::stream_socket &sock,int seconds,booster::system::error_code &e)
{
struct timeval tv;
tv.tv_sec = seconds;
tv.tv_usec = 0;
if(setsockopt(sock.native(),SOL_SOCKET,SO_SNDTIMEO,&tv,sizeof(tv)) < 0) {
e=booster::system::error_code(errno,booster::system::system_category());
}
}
#else
void set_send_timeout(booster::aio::stream_socket &sock,int seconds,booster::system::error_code &e)
{
DWORD tv = seconds * 1000; // milliseconds
if(setsockopt(sock.native(),SOL_SOCKET,SO_SNDTIMEO,reinterpret_cast(&tv),sizeof(tv)) < 0) {
e=booster::system::error_code(WSAGetLastError(),booster::system::system_category());
}
}
#endif
void set_send_timeout(booster::aio::stream_socket &sock,int seconds)
{
booster::system::error_code e;
set_send_timeout(sock,seconds,e);
if(e) {
throw booster::system::system_error(e);
}
}
} // impl
} // cppcms