Skip to content
Snippets Groups Projects
Commit 8ee8c61c authored by g0dil's avatar g0dil
Browse files

Merged revisions 570-575,577-578 via svnmerge from

https://svn.berlios.de/svnroot/repos/senf/branches/socket-cleanup

........
  r573 | g0dil | 2007-12-18 12:15:23 +0100 (Tue, 18 Dec 2007) | 6 lines
  
  Socket: Replace 'SocketProtocol::body()' member with 'fh()' and 'fd()' members
  Socket: Rename ConvertibleString to StreamableString and use 'operator<<' instead of 'operator='
  Socket: some minor documentation clarifications
  Socket/Protocols/UN: Removed unneeded UNAddress
  Socket/Protocols/UN: Fixed UNSocketAddress to adhere to the GenericAddressingPolicy requirements
........
  r577 | g0dil | 2007-12-18 13:08:27 +0100 (Tue, 18 Dec 2007) | 1 line
  
  Socket/Protocols/UN: Add all_includes.hh to svn:ignore
........
parent fbf498f7
No related branches found
No related tags found
No related merge requests found
Showing
with 130 additions and 76 deletions
...@@ -67,6 +67,11 @@ prefix_ void senf::FileBody::terminate() ...@@ -67,6 +67,11 @@ prefix_ void senf::FileBody::terminate()
} }
} }
prefix_ senf::FileHandle senf::FileBody::handle()
{
return FileHandle(ptr(this));
}
prefix_ int senf::FileBody::fd() prefix_ int senf::FileBody::fd()
const const
{ {
...@@ -194,6 +199,10 @@ prefix_ senf::FileHandle::FileHandle(std::auto_ptr<FileBody> body) ...@@ -194,6 +199,10 @@ prefix_ senf::FileHandle::FileHandle(std::auto_ptr<FileBody> body)
: body_(body.release()) : body_(body.release())
{} {}
prefix_ senf::FileHandle::FileHandle(FileBody::ptr body)
: body_(body)
{}
prefix_ senf::FileBody & senf::FileHandle::body() prefix_ senf::FileBody & senf::FileHandle::body()
{ {
BOOST_ASSERT(body_); BOOST_ASSERT(body_);
......
...@@ -182,6 +182,8 @@ namespace senf { ...@@ -182,6 +182,8 @@ namespace senf {
\c new. To configure the FileHandle behavior, A derived class \c new. To configure the FileHandle behavior, A derived class
may provide any class derived from FileBody here. */ may provide any class derived from FileBody here. */
explicit FileHandle(FileBody::ptr body);
FileBody & body(); ///< Access body FileBody & body(); ///< Access body
FileBody const & body() const; ///< Access body in const context FileBody const & body() const; ///< Access body in const context
static FileBody & body(FileHandle & handle); ///< Access body of another FileHandle instance static FileBody & body(FileHandle & handle); ///< Access body of another FileHandle instance
...@@ -192,6 +194,8 @@ namespace senf { ...@@ -192,6 +194,8 @@ namespace senf {
private: private:
FileBody::ptr body_; FileBody::ptr body_;
friend class FileBody;
}; };
/** \brief Adapt FileHandle to senf::Scheduler /** \brief Adapt FileHandle to senf::Scheduler
......
...@@ -36,6 +36,7 @@ ...@@ -36,6 +36,7 @@
namespace senf { namespace senf {
class FileHandle;
/** \brief FileHandle referenced body /** \brief FileHandle referenced body
...@@ -90,6 +91,8 @@ namespace senf { ...@@ -90,6 +91,8 @@ namespace senf {
///@} ///@}
/////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////
FileHandle handle();
int fd() const; int fd() const;
void fd(int fd); void fd(int fd);
......
...@@ -42,7 +42,7 @@ prefix_ std::pair<bool,unsigned> senf::BSDSocketProtocol::linger() ...@@ -42,7 +42,7 @@ prefix_ std::pair<bool,unsigned> senf::BSDSocketProtocol::linger()
struct linger ling; struct linger ling;
socklen_t len = sizeof(ling); socklen_t len = sizeof(ling);
::memset(&ling,sizeof(ling),0); ::memset(&ling,sizeof(ling),0);
if (::getsockopt(body().fd(),SOL_SOCKET,SO_LINGER,&ling,&len) < 0) if (::getsockopt(fd(),SOL_SOCKET,SO_LINGER,&ling,&len) < 0)
throwErrno(); throwErrno();
return std::make_pair(ling.l_onoff, ling.l_linger); return std::make_pair(ling.l_onoff, ling.l_linger);
} }
...@@ -53,7 +53,7 @@ prefix_ void senf::BSDSocketProtocol::linger(bool enable, unsigned timeout) ...@@ -53,7 +53,7 @@ prefix_ void senf::BSDSocketProtocol::linger(bool enable, unsigned timeout)
struct linger ling; struct linger ling;
ling.l_onoff = enable; ling.l_onoff = enable;
ling.l_linger = timeout; ling.l_linger = timeout;
if (::setsockopt(body().fd(),SOL_SOCKET,SO_LINGER,&ling,sizeof(ling)) < 0) if (::setsockopt(fd(),SOL_SOCKET,SO_LINGER,&ling,sizeof(ling)) < 0)
throwErrno(); throwErrno();
} }
...@@ -61,7 +61,7 @@ prefix_ struct timeval senf::BSDSocketProtocol::timestamp() ...@@ -61,7 +61,7 @@ prefix_ struct timeval senf::BSDSocketProtocol::timestamp()
const const
{ {
struct timeval tv; struct timeval tv;
if (::ioctl(body().fd(), SIOCGSTAMP, &tv) < 0) if (::ioctl(fd(), SIOCGSTAMP, &tv) < 0)
throwErrno(); throwErrno();
return tv; return tv;
} }
...@@ -73,7 +73,7 @@ prefix_ bool senf::AddressableBSDSocketProtocol::reuseaddr() ...@@ -73,7 +73,7 @@ prefix_ bool senf::AddressableBSDSocketProtocol::reuseaddr()
{ {
int value; int value;
socklen_t len (sizeof(value)); socklen_t len (sizeof(value));
if (::getsockopt(body().fd(),SOL_SOCKET,SO_REUSEADDR,&value,&len) < 0) if (::getsockopt(fd(),SOL_SOCKET,SO_REUSEADDR,&value,&len) < 0)
throwErrno(); throwErrno();
return value; return value;
} }
...@@ -82,7 +82,7 @@ prefix_ void senf::AddressableBSDSocketProtocol::reuseaddr(bool value) ...@@ -82,7 +82,7 @@ prefix_ void senf::AddressableBSDSocketProtocol::reuseaddr(bool value)
const const
{ {
int ivalue (value); int ivalue (value);
if (::setsockopt(body().fd(),SOL_SOCKET,SO_REUSEADDR,&ivalue,sizeof(ivalue)) < 0) if (::setsockopt(fd(),SOL_SOCKET,SO_REUSEADDR,&ivalue,sizeof(ivalue)) < 0)
throwErrno(); throwErrno();
} }
......
...@@ -45,10 +45,10 @@ prefix_ void senf::DVBDemuxSectionProtocol::init_client(unsigned short adapter, ...@@ -45,10 +45,10 @@ prefix_ void senf::DVBDemuxSectionProtocol::init_client(unsigned short adapter,
{ {
std::string devDemux = str( boost::format( std::string devDemux = str( boost::format(
"/dev/dvb/adapter%d/demux%d") % adapter % device); "/dev/dvb/adapter%d/demux%d") % adapter % device);
int fd = open(devDemux.c_str(), O_RDONLY | O_NONBLOCK); int f = open(devDemux.c_str(), O_RDONLY | O_NONBLOCK);
if (fd < 0) if (f < 0)
throwErrno(); throwErrno();
body().fd(fd); fd(f);
} }
prefix_ unsigned senf::DVBDemuxSectionProtocol::available() prefix_ unsigned senf::DVBDemuxSectionProtocol::available()
...@@ -66,7 +66,7 @@ prefix_ std::auto_ptr<senf::SocketProtocol> senf::DVBDemuxSectionProtocol::clone ...@@ -66,7 +66,7 @@ prefix_ std::auto_ptr<senf::SocketProtocol> senf::DVBDemuxSectionProtocol::clone
prefix_ void senf::DVBDemuxSectionProtocol::setSectionFilter(struct dmx_sct_filter_params *filter) prefix_ void senf::DVBDemuxSectionProtocol::setSectionFilter(struct dmx_sct_filter_params *filter)
const const
{ {
if (::ioctl(body().fd(), DMX_SET_FILTER, filter) < 0) if (::ioctl(fd(), DMX_SET_FILTER, filter) < 0)
throwErrno(); throwErrno();
} }
...@@ -77,10 +77,10 @@ prefix_ void senf::DVBDemuxPESProtocol::init_client(unsigned short adapter, unsi ...@@ -77,10 +77,10 @@ prefix_ void senf::DVBDemuxPESProtocol::init_client(unsigned short adapter, unsi
{ {
std::string devDemux = str( boost::format( std::string devDemux = str( boost::format(
"/dev/dvb/adapter%d/demux%d") % adapter % device); "/dev/dvb/adapter%d/demux%d") % adapter % device);
int fd = open(devDemux.c_str(), O_RDONLY | O_NONBLOCK); int f = open(devDemux.c_str(), O_RDONLY | O_NONBLOCK);
if (fd < 0) if (f < 0)
throwErrno(); throwErrno();
body().fd(fd); fd(f);
} }
prefix_ unsigned senf::DVBDemuxPESProtocol::available() prefix_ unsigned senf::DVBDemuxPESProtocol::available()
...@@ -98,7 +98,7 @@ prefix_ std::auto_ptr<senf::SocketProtocol> senf::DVBDemuxPESProtocol::clone() ...@@ -98,7 +98,7 @@ prefix_ std::auto_ptr<senf::SocketProtocol> senf::DVBDemuxPESProtocol::clone()
prefix_ void senf::DVBDemuxPESProtocol::setPESFilter(struct dmx_pes_filter_params *filter) prefix_ void senf::DVBDemuxPESProtocol::setPESFilter(struct dmx_pes_filter_params *filter)
const const
{ {
if (::ioctl(body().fd(), DMX_SET_PES_FILTER, filter) < 0) if (::ioctl(fd(), DMX_SET_PES_FILTER, filter) < 0)
throwErrno(); throwErrno();
} }
...@@ -109,10 +109,10 @@ prefix_ void senf::DVBDvrProtocol::init_client(unsigned short adapter, unsigned ...@@ -109,10 +109,10 @@ prefix_ void senf::DVBDvrProtocol::init_client(unsigned short adapter, unsigned
{ {
std::string devDvr = str( boost::format( std::string devDvr = str( boost::format(
"/dev/dvb/adapter%d/dvr%d") % adapter % device); "/dev/dvb/adapter%d/dvr%d") % adapter % device);
int fd = open(devDvr.c_str(), O_RDONLY | O_NONBLOCK); int f = open(devDvr.c_str(), O_RDONLY | O_NONBLOCK);
if (fd < 0) if (f < 0)
throwErrno(); throwErrno();
body().fd(fd); fd(f);
} }
prefix_ unsigned senf::DVBDvrProtocol::available() prefix_ unsigned senf::DVBDvrProtocol::available()
......
...@@ -41,21 +41,21 @@ ...@@ -41,21 +41,21 @@
prefix_ void senf::DVBDemuxProtocol::setBufferSize(unsigned long size) prefix_ void senf::DVBDemuxProtocol::setBufferSize(unsigned long size)
const const
{ {
if (::ioctl(body().fd(), DMX_SET_BUFFER_SIZE, size) < 0) if (::ioctl(fd(), DMX_SET_BUFFER_SIZE, size) < 0)
throwErrno(); throwErrno();
} }
prefix_ void senf::DVBDemuxProtocol::startFiltering() prefix_ void senf::DVBDemuxProtocol::startFiltering()
const const
{ {
if (::ioctl(body().fd(), DMX_START) < 0) if (::ioctl(fd(), DMX_START) < 0)
throwErrno(); throwErrno();
} }
prefix_ void senf::DVBDemuxProtocol::stopFiltering() prefix_ void senf::DVBDemuxProtocol::stopFiltering()
const const
{ {
if (::ioctl(body().fd(), DMX_STOP) < 0) if (::ioctl(fd(), DMX_STOP) < 0)
throwErrno(); throwErrno();
} }
......
...@@ -45,10 +45,10 @@ prefix_ void senf::DVBFrontendProtocol::init_client(uint8_t adapter, boost::uint ...@@ -45,10 +45,10 @@ prefix_ void senf::DVBFrontendProtocol::init_client(uint8_t adapter, boost::uint
{ {
std::string devFrontend = str( boost::format( std::string devFrontend = str( boost::format(
"/dev/dvb/adapter%d/frontend%d") % adapter % device); "/dev/dvb/adapter%d/frontend%d") % adapter % device);
int fd = open(devFrontend.c_str(), O_RDONLY | O_NONBLOCK); int f = open(devFrontend.c_str(), O_RDONLY | O_NONBLOCK);
if (fd < 0) if (f < 0)
throwErrno(); throwErrno();
body().fd(fd); fd(f);
} }
prefix_ unsigned senf::DVBFrontendProtocol::available() prefix_ unsigned senf::DVBFrontendProtocol::available()
...@@ -73,7 +73,7 @@ prefix_ std::auto_ptr<senf::SocketProtocol> senf::DVBFrontendProtocol::clone() ...@@ -73,7 +73,7 @@ prefix_ std::auto_ptr<senf::SocketProtocol> senf::DVBFrontendProtocol::clone()
prefix_ void senf::DVBFrontendProtocol::signalStrength(int16_t *strength) prefix_ void senf::DVBFrontendProtocol::signalStrength(int16_t *strength)
const const
{ {
if (::ioctl(body().fd(), FE_READ_SIGNAL_STRENGTH, strength) < 0) if (::ioctl(fd(), FE_READ_SIGNAL_STRENGTH, strength) < 0)
throwErrno(); throwErrno();
} }
......
...@@ -47,7 +47,7 @@ senf::ConnectedRawV4SocketProtocol::init_client(int const & protocol) ...@@ -47,7 +47,7 @@ senf::ConnectedRawV4SocketProtocol::init_client(int const & protocol)
int sock = ::socket(PF_INET, SOCK_RAW, protocol); int sock = ::socket(PF_INET, SOCK_RAW, protocol);
if (sock < 0) if (sock < 0)
throwErrno(); throwErrno();
body().fd(sock); fd(sock);
} }
prefix_ void prefix_ void
...@@ -79,7 +79,7 @@ prefix_ void senf::ConnectedRawV6SocketProtocol::init_client(int const & protoco ...@@ -79,7 +79,7 @@ prefix_ void senf::ConnectedRawV6SocketProtocol::init_client(int const & protoco
int sock = ::socket(PF_INET6,SOCK_RAW,protocol); int sock = ::socket(PF_INET6,SOCK_RAW,protocol);
if (sock < 0) if (sock < 0)
throwErrno(); throwErrno();
body().fd(sock); fd(sock);
} }
prefix_ void prefix_ void
...@@ -98,3 +98,15 @@ prefix_ std::auto_ptr<senf::SocketProtocol> senf::ConnectedRawV6SocketProtocol:: ...@@ -98,3 +98,15 @@ prefix_ std::auto_ptr<senf::SocketProtocol> senf::ConnectedRawV6SocketProtocol::
///////////////////////////////cc.e//////////////////////////////////////// ///////////////////////////////cc.e////////////////////////////////////////
#undef prefix_ #undef prefix_
//#include "ConnectedRawInetSocketHandle.mpp"
// Local Variables:
// mode: c++
// fill-column: 100
// comment-column: 40
// c-file-style: "senf"
// indent-tabs-mode: nil
// ispell-local-dictionary: "american"
// compile-command: "scons -u test"
// End:
...@@ -47,7 +47,7 @@ prefix_ void senf::ConnectedUDPv4SocketProtocol::init_client() ...@@ -47,7 +47,7 @@ prefix_ void senf::ConnectedUDPv4SocketProtocol::init_client()
int sock = ::socket(PF_INET,SOCK_DGRAM,0); int sock = ::socket(PF_INET,SOCK_DGRAM,0);
if (sock < 0) if (sock < 0)
throwErrno(); throwErrno();
body().fd(sock); fd(sock);
} }
prefix_ void prefix_ void
...@@ -73,7 +73,7 @@ prefix_ void senf::ConnectedUDPv6SocketProtocol::init_client() ...@@ -73,7 +73,7 @@ prefix_ void senf::ConnectedUDPv6SocketProtocol::init_client()
int sock = ::socket(PF_INET6,SOCK_DGRAM,0); int sock = ::socket(PF_INET6,SOCK_DGRAM,0);
if (sock < 0) if (sock < 0)
throwErrno(); throwErrno();
body().fd(sock); fd(sock);
} }
prefix_ void prefix_ void
......
...@@ -83,7 +83,7 @@ namespace senf { ...@@ -83,7 +83,7 @@ namespace senf {
INet4Address address() const; ///< Return address INet4Address address() const; ///< Return address
unsigned port() const; ///< Return port number unsigned port() const; ///< Return port number
bool boolean_test() const; ///< \c true, if address is empty (i.e. 0.0.0.0:0) bool boolean_test() const; ///< \c true, if address is not empty (i.e. 0.0.0.0:0)
void clear(); ///< Clear address/port to 0.0.0.0:0 void clear(); ///< Clear address/port to 0.0.0.0:0
......
...@@ -41,14 +41,14 @@ ...@@ -41,14 +41,14 @@
prefix_ void senf::IPv4Protocol::connect(INet4SocketAddress const & address) prefix_ void senf::IPv4Protocol::connect(INet4SocketAddress const & address)
const const
{ {
if (::connect(body().fd(),address.sockaddr_p(), address.sockaddr_len()) < 0) if (::connect(fd(),address.sockaddr_p(), address.sockaddr_len()) < 0)
throwErrno(); throwErrno();
} }
prefix_ void senf::IPv4Protocol::bind(INet4SocketAddress const & address) prefix_ void senf::IPv4Protocol::bind(INet4SocketAddress const & address)
const const
{ {
if (::bind(body().fd(),address.sockaddr_p(), address.sockaddr_len()) < 0) if (::bind(fd(),address.sockaddr_p(), address.sockaddr_len()) < 0)
throwErrno(); throwErrno();
} }
...@@ -59,14 +59,14 @@ prefix_ void senf::IPv4Protocol::bind(INet4SocketAddress const & address) ...@@ -59,14 +59,14 @@ prefix_ void senf::IPv4Protocol::bind(INet4SocketAddress const & address)
prefix_ void senf::IPv6Protocol::connect(INet6SocketAddress const & address) prefix_ void senf::IPv6Protocol::connect(INet6SocketAddress const & address)
const const
{ {
if (::connect(body().fd(),address.sockaddr_p(), address.sockaddr_len()) < 0) if (::connect(fd(),address.sockaddr_p(), address.sockaddr_len()) < 0)
throwErrno(); throwErrno();
} }
prefix_ void senf::IPv6Protocol::bind(INet6SocketAddress const & address) prefix_ void senf::IPv6Protocol::bind(INet6SocketAddress const & address)
const const
{ {
if (::bind(body().fd(),address.sockaddr_p(), address.sockaddr_len()) < 0) if (::bind(fd(),address.sockaddr_p(), address.sockaddr_len()) < 0)
throwErrno(); throwErrno();
} }
......
...@@ -37,7 +37,7 @@ prefix_ unsigned senf::RawInetProtocol::available() ...@@ -37,7 +37,7 @@ prefix_ unsigned senf::RawInetProtocol::available()
const const
{ {
int n; int n;
if (::ioctl(body().fd(),SIOCINQ,&n) < 0) if (::ioctl(fd(),SIOCINQ,&n) < 0)
throwErrno(); throwErrno();
return n; return n;
} }
...@@ -47,4 +47,18 @@ prefix_ bool senf::RawInetProtocol::eof() ...@@ -47,4 +47,18 @@ prefix_ bool senf::RawInetProtocol::eof()
{ {
return false; return false;
} }
///////////////////////////////cc.e////////////////////////////////////////
#undef prefix_ #undef prefix_
//#include "UDPProtocol.mpp"
// Local Variables:
// mode: c++
// fill-column: 100
// comment-column: 40
// c-file-style: "senf"
// indent-tabs-mode: nil
// ispell-local-dictionary: "american"
// compile-command: "scons -u test"
// End:
...@@ -47,7 +47,7 @@ senf::RawV4SocketProtocol::init_client(int const & protocol) ...@@ -47,7 +47,7 @@ senf::RawV4SocketProtocol::init_client(int const & protocol)
int sock = ::socket(PF_INET, SOCK_RAW, protocol); int sock = ::socket(PF_INET, SOCK_RAW, protocol);
if (sock < 0) if (sock < 0)
throwErrno(); throwErrno();
body().fd(sock); fd(sock);
} }
prefix_ void prefix_ void
...@@ -79,7 +79,7 @@ prefix_ void senf::RawV6SocketProtocol::init_client(int const & protocol) ...@@ -79,7 +79,7 @@ prefix_ void senf::RawV6SocketProtocol::init_client(int const & protocol)
int sock = ::socket(PF_INET6,SOCK_RAW,protocol); int sock = ::socket(PF_INET6,SOCK_RAW,protocol);
if (sock < 0) if (sock < 0)
throwErrno(); throwErrno();
body().fd(sock); fd(sock);
} }
prefix_ void prefix_ void
...@@ -98,3 +98,15 @@ prefix_ std::auto_ptr<senf::SocketProtocol> senf::RawV6SocketProtocol::clone() ...@@ -98,3 +98,15 @@ prefix_ std::auto_ptr<senf::SocketProtocol> senf::RawV6SocketProtocol::clone()
///////////////////////////////cc.e//////////////////////////////////////// ///////////////////////////////cc.e////////////////////////////////////////
#undef prefix_ #undef prefix_
//#include "RawInetSocketHandle.mpp"
// Local Variables:
// mode: c++
// fill-column: 100
// comment-column: 40
// c-file-style: "senf"
// indent-tabs-mode: nil
// ispell-local-dictionary: "american"
// compile-command: "scons -u test"
// End:
...@@ -44,7 +44,7 @@ prefix_ bool senf::TCPProtocol::nodelay() ...@@ -44,7 +44,7 @@ prefix_ bool senf::TCPProtocol::nodelay()
{ {
int value; int value;
socklen_t len (sizeof(value)); socklen_t len (sizeof(value));
if (::getsockopt(body().fd(),SOL_TCP,TCP_NODELAY,&value,&len) < 0) if (::getsockopt(fd(),SOL_TCP,TCP_NODELAY,&value,&len) < 0)
throwErrno(); throwErrno();
return value; return value;
} }
...@@ -53,7 +53,7 @@ prefix_ void senf::TCPProtocol::nodelay(bool value) ...@@ -53,7 +53,7 @@ prefix_ void senf::TCPProtocol::nodelay(bool value)
const const
{ {
int ivalue (value); int ivalue (value);
if (::setsockopt(body().fd(),SOL_TCP,TCP_NODELAY,&ivalue,sizeof(ivalue)) < 0) if (::setsockopt(fd(),SOL_TCP,TCP_NODELAY,&ivalue,sizeof(ivalue)) < 0)
throwErrno(); throwErrno();
} }
...@@ -61,7 +61,7 @@ prefix_ unsigned senf::TCPProtocol::siocinq() ...@@ -61,7 +61,7 @@ prefix_ unsigned senf::TCPProtocol::siocinq()
const const
{ {
int n; int n;
if (::ioctl(body().fd(),SIOCINQ,&n) < 0) if (::ioctl(fd(),SIOCINQ,&n) < 0)
throwErrno(); throwErrno();
return n; return n;
} }
...@@ -70,7 +70,7 @@ prefix_ unsigned senf::TCPProtocol::siocoutq() ...@@ -70,7 +70,7 @@ prefix_ unsigned senf::TCPProtocol::siocoutq()
const const
{ {
int n; int n;
if (::ioctl(body().fd(),SIOCOUTQ,&n) < 0) if (::ioctl(fd(),SIOCOUTQ,&n) < 0)
throwErrno(); throwErrno();
return n; return n;
} }
...@@ -84,7 +84,7 @@ prefix_ unsigned senf::TCPProtocol::available() ...@@ -84,7 +84,7 @@ prefix_ unsigned senf::TCPProtocol::available()
prefix_ bool senf::TCPProtocol::eof() prefix_ bool senf::TCPProtocol::eof()
const const
{ {
return body().readable() && available()==0; return fh().readable() && available()==0;
} }
......
...@@ -47,7 +47,7 @@ prefix_ void senf::TCPv4SocketProtocol::init_client() ...@@ -47,7 +47,7 @@ prefix_ void senf::TCPv4SocketProtocol::init_client()
int sock = ::socket(PF_INET,SOCK_STREAM,0); int sock = ::socket(PF_INET,SOCK_STREAM,0);
if (sock < 0) if (sock < 0)
throwErrno(); throwErrno();
body().fd(sock); fd(sock);
} }
prefix_ void prefix_ void
...@@ -64,7 +64,7 @@ prefix_ void senf::TCPv4SocketProtocol::init_server() ...@@ -64,7 +64,7 @@ prefix_ void senf::TCPv4SocketProtocol::init_server()
int sock = ::socket(PF_INET,SOCK_STREAM,0); int sock = ::socket(PF_INET,SOCK_STREAM,0);
if (sock < 0) if (sock < 0)
throwErrno(); throwErrno();
body().fd(sock); fd(sock);
} }
prefix_ void senf::TCPv4SocketProtocol::init_server(INet4SocketAddress const & address, prefix_ void senf::TCPv4SocketProtocol::init_server(INet4SocketAddress const & address,
...@@ -74,7 +74,7 @@ prefix_ void senf::TCPv4SocketProtocol::init_server(INet4SocketAddress const & a ...@@ -74,7 +74,7 @@ prefix_ void senf::TCPv4SocketProtocol::init_server(INet4SocketAddress const & a
init_server(); init_server();
bind(address); bind(address);
reuseaddr(true); reuseaddr(true);
if (::listen(body().fd(),backlog) < 0) if (::listen(fd(),backlog) < 0)
throwErrno(); throwErrno();
} }
...@@ -93,7 +93,7 @@ prefix_ void senf::TCPv6SocketProtocol::init_client() ...@@ -93,7 +93,7 @@ prefix_ void senf::TCPv6SocketProtocol::init_client()
int sock = ::socket(PF_INET6,SOCK_STREAM,0); int sock = ::socket(PF_INET6,SOCK_STREAM,0);
if (sock < 0) if (sock < 0)
throwErrno(); throwErrno();
body().fd(sock); fd(sock);
} }
prefix_ void prefix_ void
...@@ -110,7 +110,7 @@ prefix_ void senf::TCPv6SocketProtocol::init_server() ...@@ -110,7 +110,7 @@ prefix_ void senf::TCPv6SocketProtocol::init_server()
int sock = ::socket(PF_INET6,SOCK_STREAM,0); int sock = ::socket(PF_INET6,SOCK_STREAM,0);
if (sock < 0) if (sock < 0)
throwErrno(); throwErrno();
body().fd(sock); fd(sock);
} }
prefix_ void senf::TCPv6SocketProtocol::init_server(INet6SocketAddress const & address, prefix_ void senf::TCPv6SocketProtocol::init_server(INet6SocketAddress const & address,
...@@ -120,7 +120,7 @@ prefix_ void senf::TCPv6SocketProtocol::init_server(INet6SocketAddress const & a ...@@ -120,7 +120,7 @@ prefix_ void senf::TCPv6SocketProtocol::init_server(INet6SocketAddress const & a
init_server(); init_server();
bind(address); bind(address);
reuseaddr(true); reuseaddr(true);
if (::listen(body().fd(),backlog) < 0) if (::listen(fd(),backlog) < 0)
throwErrno(); throwErrno();
} }
......
...@@ -62,16 +62,16 @@ namespace senf { ...@@ -62,16 +62,16 @@ namespace senf {
/** \brief IPv4 TCP Socket Protocol /** \brief IPv4 TCP Socket Protocol
\par Socket Handle typedefs: \par Socket Handle typedefs:
\ref TCPv4ClientSocketHandle (ProtocolClientSocketHandle), \ref TCPv4ServerSocketHandle \ref TCPv4ClientSocketHandle (ProtocolClientSocketHandle), \ref TCPv4ServerSocketHandle
(ProtocolServerSocketHandle) (ProtocolServerSocketHandle)
\par Policy Interface: \par Policy Interface:
ClientSocketHandle::read(), ClientSocketHandle::write(), ClientSocketHandle::bind(), ClientSocketHandle::read(), ClientSocketHandle::write(), ClientSocketHandle::bind(),
ClientSocketHandle::local(), ClientSocketHandle::connect(), ClientSocketHandle::peer(), ClientSocketHandle::local(), ClientSocketHandle::connect(), ClientSocketHandle::peer(),
ClientSocketHandle::rcvbuf(), ClientSocketHandle::sndbuf() ClientSocketHandle::rcvbuf(), ClientSocketHandle::sndbuf()
\par Address Type: \par Address Type:
INet4Address INet4Address
TCPv4SocketProtocol provides an internet protocol stream socket based on the TCP protocol TCPv4SocketProtocol provides an internet protocol stream socket based on the TCP protocol
and IPv4 addressing. and IPv4 addressing.
......
...@@ -44,7 +44,7 @@ prefix_ unsigned senf::UDPProtocol::available() ...@@ -44,7 +44,7 @@ prefix_ unsigned senf::UDPProtocol::available()
const const
{ {
int n; int n;
if (::ioctl(body().fd(),SIOCINQ,&n) < 0) if (::ioctl(fd(),SIOCINQ,&n) < 0)
throwErrno(); throwErrno();
return n; return n;
} }
...@@ -60,7 +60,7 @@ prefix_ bool senf::UDPProtocol::mcLoop() ...@@ -60,7 +60,7 @@ prefix_ bool senf::UDPProtocol::mcLoop()
{ {
int value; int value;
socklen_t len (sizeof(value)); socklen_t len (sizeof(value));
if (::getsockopt(body().fd(),SOL_IP,IP_MULTICAST_LOOP,&value,&len) < 0) if (::getsockopt(fd(),SOL_IP,IP_MULTICAST_LOOP,&value,&len) < 0)
throwErrno(); throwErrno();
return value; return value;
} }
...@@ -69,7 +69,7 @@ prefix_ void senf::UDPProtocol::mcLoop(bool value) ...@@ -69,7 +69,7 @@ prefix_ void senf::UDPProtocol::mcLoop(bool value)
const const
{ {
int ivalue (value); int ivalue (value);
if (::setsockopt(body().fd(),SOL_IP,IP_MULTICAST_LOOP,&ivalue,sizeof(ivalue)) < 0) if (::setsockopt(fd(),SOL_IP,IP_MULTICAST_LOOP,&ivalue,sizeof(ivalue)) < 0)
throwErrno(); throwErrno();
} }
...@@ -80,7 +80,7 @@ prefix_ void senf::UDPProtocol::mcAddMembership(INet4SocketAddress const & mcAdd ...@@ -80,7 +80,7 @@ prefix_ void senf::UDPProtocol::mcAddMembership(INet4SocketAddress const & mcAdd
mreqn.imr_multiaddr = reinterpret_cast<struct sockaddr_in const *>(mcAddr.sockaddr_p())->sin_addr; mreqn.imr_multiaddr = reinterpret_cast<struct sockaddr_in const *>(mcAddr.sockaddr_p())->sin_addr;
mreqn.imr_address.s_addr = htons(INADDR_ANY); mreqn.imr_address.s_addr = htons(INADDR_ANY);
mreqn.imr_ifindex = 0; mreqn.imr_ifindex = 0;
if (::setsockopt(body().fd(),SOL_IP,IP_ADD_MEMBERSHIP,&mreqn,sizeof(mreqn)) < 0) if (::setsockopt(fd(),SOL_IP,IP_ADD_MEMBERSHIP,&mreqn,sizeof(mreqn)) < 0)
throwErrno(); throwErrno();
} }
...@@ -92,7 +92,7 @@ prefix_ void senf::UDPProtocol::mcAddMembership(INet4SocketAddress const & mcAdd ...@@ -92,7 +92,7 @@ prefix_ void senf::UDPProtocol::mcAddMembership(INet4SocketAddress const & mcAdd
mreqn.imr_multiaddr = reinterpret_cast<struct sockaddr_in const *>(mcAddr.sockaddr_p())->sin_addr; mreqn.imr_multiaddr = reinterpret_cast<struct sockaddr_in const *>(mcAddr.sockaddr_p())->sin_addr;
mreqn.imr_address = reinterpret_cast<struct sockaddr_in const *>(localAddr.sockaddr_p())->sin_addr; mreqn.imr_address = reinterpret_cast<struct sockaddr_in const *>(localAddr.sockaddr_p())->sin_addr;
mreqn.imr_ifindex = 0; mreqn.imr_ifindex = 0;
if (::setsockopt(body().fd(),SOL_IP,IP_ADD_MEMBERSHIP,&mreqn,sizeof(mreqn)) < 0) if (::setsockopt(fd(),SOL_IP,IP_ADD_MEMBERSHIP,&mreqn,sizeof(mreqn)) < 0)
throwErrno(); throwErrno();
} }
...@@ -103,7 +103,7 @@ prefix_ void senf::UDPProtocol::mcDropMembership(INet4SocketAddress const & mcAd ...@@ -103,7 +103,7 @@ prefix_ void senf::UDPProtocol::mcDropMembership(INet4SocketAddress const & mcAd
mreqn.imr_multiaddr = reinterpret_cast<struct sockaddr_in const *>(mcAddr.sockaddr_p())->sin_addr; mreqn.imr_multiaddr = reinterpret_cast<struct sockaddr_in const *>(mcAddr.sockaddr_p())->sin_addr;
mreqn.imr_address.s_addr = htons(INADDR_ANY); mreqn.imr_address.s_addr = htons(INADDR_ANY);
mreqn.imr_ifindex = 0; mreqn.imr_ifindex = 0;
if (::setsockopt(body().fd(),SOL_IP,IP_DROP_MEMBERSHIP,&mreqn,sizeof(mreqn)) < 0) if (::setsockopt(fd(),SOL_IP,IP_DROP_MEMBERSHIP,&mreqn,sizeof(mreqn)) < 0)
throwErrno(); throwErrno();
} }
...@@ -115,7 +115,7 @@ prefix_ void senf::UDPProtocol::mcDropMembership(INet4SocketAddress const & mcAd ...@@ -115,7 +115,7 @@ prefix_ void senf::UDPProtocol::mcDropMembership(INet4SocketAddress const & mcAd
mreqn.imr_multiaddr = reinterpret_cast<struct sockaddr_in const *>(mcAddr.sockaddr_p())->sin_addr; mreqn.imr_multiaddr = reinterpret_cast<struct sockaddr_in const *>(mcAddr.sockaddr_p())->sin_addr;
mreqn.imr_address = reinterpret_cast<struct sockaddr_in const *>(localAddr.sockaddr_p())->sin_addr; mreqn.imr_address = reinterpret_cast<struct sockaddr_in const *>(localAddr.sockaddr_p())->sin_addr;
mreqn.imr_ifindex = 0; mreqn.imr_ifindex = 0;
if (::setsockopt(body().fd(),SOL_IP,IP_DROP_MEMBERSHIP,&mreqn,sizeof(mreqn)) < 0) if (::setsockopt(fd(),SOL_IP,IP_DROP_MEMBERSHIP,&mreqn,sizeof(mreqn)) < 0)
throwErrno(); throwErrno();
} }
...@@ -129,7 +129,7 @@ prefix_ void senf::UDPProtocol::mcIface(std::string const & iface) ...@@ -129,7 +129,7 @@ prefix_ void senf::UDPProtocol::mcIface(std::string const & iface)
if (mreqn.imr_ifindex == 0) if (mreqn.imr_ifindex == 0)
throwErrno(EINVAL); throwErrno(EINVAL);
} }
if (::setsockopt(body().fd(),SOL_IP,IP_MULTICAST_IF,&mreqn,sizeof(mreqn)) < 0) if (::setsockopt(fd(),SOL_IP,IP_MULTICAST_IF,&mreqn,sizeof(mreqn)) < 0)
throwErrno(); throwErrno();
} }
...@@ -138,7 +138,7 @@ prefix_ unsigned senf::UDPProtocol::mcTTL() ...@@ -138,7 +138,7 @@ prefix_ unsigned senf::UDPProtocol::mcTTL()
{ {
int value; int value;
socklen_t len (sizeof(value)); socklen_t len (sizeof(value));
if (::getsockopt(body().fd(),SOL_IP,IP_MULTICAST_TTL,&value,&len) < 0) if (::getsockopt(fd(),SOL_IP,IP_MULTICAST_TTL,&value,&len) < 0)
throwErrno(); throwErrno();
return value; return value;
} }
...@@ -146,7 +146,7 @@ prefix_ unsigned senf::UDPProtocol::mcTTL() ...@@ -146,7 +146,7 @@ prefix_ unsigned senf::UDPProtocol::mcTTL()
prefix_ void senf::UDPProtocol::mcTTL(unsigned value) prefix_ void senf::UDPProtocol::mcTTL(unsigned value)
const const
{ {
if (::setsockopt(body().fd(),SOL_IP,IP_MULTICAST_TTL,&value,sizeof(value)) < 0) if (::setsockopt(fd(),SOL_IP,IP_MULTICAST_TTL,&value,sizeof(value)) < 0)
throwErrno(); throwErrno();
} }
......
...@@ -47,7 +47,7 @@ prefix_ void senf::UDPv4SocketProtocol::init_client() ...@@ -47,7 +47,7 @@ prefix_ void senf::UDPv4SocketProtocol::init_client()
int sock = ::socket(PF_INET,SOCK_DGRAM,0); int sock = ::socket(PF_INET,SOCK_DGRAM,0);
if (sock < 0) if (sock < 0)
throwErrno(); throwErrno();
body().fd(sock); fd(sock);
} }
prefix_ void prefix_ void
...@@ -73,7 +73,7 @@ prefix_ void senf::UDPv6SocketProtocol::init_client() ...@@ -73,7 +73,7 @@ prefix_ void senf::UDPv6SocketProtocol::init_client()
int sock = ::socket(PF_INET6,SOCK_DGRAM,0); int sock = ::socket(PF_INET6,SOCK_DGRAM,0);
if (sock < 0) if (sock < 0)
throwErrno(); throwErrno();
body().fd(sock); fd(sock);
} }
prefix_ void prefix_ void
......
...@@ -51,7 +51,7 @@ prefix_ void senf::PacketProtocol::init_client(SocketType type, int protocol) ...@@ -51,7 +51,7 @@ prefix_ void senf::PacketProtocol::init_client(SocketType type, int protocol)
int sock = ::socket(PF_PACKET, socktype, htons(protocol)); int sock = ::socket(PF_PACKET, socktype, htons(protocol));
if (sock < 0) if (sock < 0)
throwErrno(); throwErrno();
body().fd(sock); fd(sock);
} }
prefix_ std::auto_ptr<senf::SocketProtocol> senf::PacketProtocol::clone() prefix_ std::auto_ptr<senf::SocketProtocol> senf::PacketProtocol::clone()
...@@ -63,9 +63,9 @@ prefix_ std::auto_ptr<senf::SocketProtocol> senf::PacketProtocol::clone() ...@@ -63,9 +63,9 @@ prefix_ std::auto_ptr<senf::SocketProtocol> senf::PacketProtocol::clone()
prefix_ unsigned senf::PacketProtocol::available() prefix_ unsigned senf::PacketProtocol::available()
const const
{ {
if (! body().readable()) if (! fh().readable())
return 0; return 0;
ssize_t l = ::recv(body().fd(),0,0,MSG_PEEK | MSG_TRUNC); ssize_t l = ::recv(fd(),0,0,MSG_PEEK | MSG_TRUNC);
if (l < 0) if (l < 0)
throwErrno(); throwErrno();
return l; return l;
...@@ -100,14 +100,14 @@ prefix_ void senf::PacketProtocol::mcAdd(std::string const & interface, ...@@ -100,14 +100,14 @@ prefix_ void senf::PacketProtocol::mcAdd(std::string const & interface,
MACAddress const & address) MACAddress const & address)
const const
{ {
do_mc(body().fd(),interface,address,true); do_mc(fd(),interface,address,true);
} }
prefix_ void senf::PacketProtocol::mcDrop(std::string const & interface, prefix_ void senf::PacketProtocol::mcDrop(std::string const & interface,
MACAddress const & address) MACAddress const & address)
const const
{ {
do_mc(body().fd(),interface,address,false); do_mc(fd(),interface,address,false);
} }
///////////////////////////////cc.e//////////////////////////////////////// ///////////////////////////////cc.e////////////////////////////////////////
......
...@@ -48,8 +48,8 @@ prefix_ void senf::TapProtocol::init_client() ...@@ -48,8 +48,8 @@ prefix_ void senf::TapProtocol::init_client()
prefix_ void senf::TapProtocol::init_client(std::string const & interface_name, bool const NO_PI) prefix_ void senf::TapProtocol::init_client(std::string const & interface_name, bool const NO_PI)
const const
{ {
int fd; int f;
if ( (fd = ::open("/dev/net/tun", O_RDWR)) < 0 ) if ( (f = ::open("/dev/net/tun", O_RDWR)) < 0 )
throwErrno(); throwErrno();
struct ifreq ifr; struct ifreq ifr;
::memset( &ifr, 0, sizeof(ifr)); ::memset( &ifr, 0, sizeof(ifr));
...@@ -57,9 +57,9 @@ prefix_ void senf::TapProtocol::init_client(std::string const & interface_name, ...@@ -57,9 +57,9 @@ prefix_ void senf::TapProtocol::init_client(std::string const & interface_name,
if (NO_PI) if (NO_PI)
ifr.ifr_flags |= IFF_NO_PI; ifr.ifr_flags |= IFF_NO_PI;
interface_name.copy( ifr.ifr_name, IFNAMSIZ); interface_name.copy( ifr.ifr_name, IFNAMSIZ);
if (::ioctl(fd, TUNSETIFF, (void *) &ifr) < 0 ) if (::ioctl(f, TUNSETIFF, (void *) &ifr) < 0 )
throwErrno(); throwErrno();
body().fd(fd); fd(f);
} }
prefix_ std::auto_ptr<senf::SocketProtocol> senf::TapProtocol::clone() prefix_ std::auto_ptr<senf::SocketProtocol> senf::TapProtocol::clone()
...@@ -71,9 +71,9 @@ prefix_ std::auto_ptr<senf::SocketProtocol> senf::TapProtocol::clone() ...@@ -71,9 +71,9 @@ prefix_ std::auto_ptr<senf::SocketProtocol> senf::TapProtocol::clone()
prefix_ unsigned senf::TapProtocol::available() prefix_ unsigned senf::TapProtocol::available()
const const
{ {
if (! body().readable()) if (! fh().readable())
return 0; return 0;
ssize_t l = ::recv(body().fd(),0,0,MSG_PEEK | MSG_TRUNC); ssize_t l = ::recv(fd(),0,0,MSG_PEEK | MSG_TRUNC);
if (l < 0) if (l < 0)
//throwErrno(); //throwErrno();
return 1588; return 1588;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment